我對面向物件的專案劊子手有問題 - 序列化部分。我在序列化方法中保存了我的代碼,但是當我嘗試反序列化它時,我遇到了問題。我在 YAML 檔案中看到類的所有組件,當我嘗試使用代碼訪問它們時,我做不到。我不知道問題出在哪里。這是我的序列化方法和反序列化方法。
def serialize
file = File.open('game.yml', 'w') do |f|
YAML.dump(self, f)
end
file.close
exit
end
def deserialize
File.open('game.yml', 'r') do |f|
p YAML.load(f)
end
# p file['word']
end
如果你想查看我的所有代碼,這里是我的 GitHub 和 Repl
Repl:https
://replit.com/@Burakkepuc/Hangman#main.rb
GitHub:https ://github.com/Burakkepuc/Hangman
uj5u.com熱心網友回復:
我認為它實際上作業正常。
YAML.load回傳 Game 的不同實體。您可以在該實體上呼叫方法,但您無權訪問這些屬性。
def deserialize
File.open('game.yml', 'r') do |f|
loaded_game = YAML.load(f)
puts loaded_game.length # fails with method not found
end
# p file['word']
end
為您的 Game 類添加一個閱讀器,然后上面將報告新加載的 Game 實體中的長度值。
attr_reader :length
我不確定你想對加載的游戲做什么,但也許你只是想呼叫guess它?
def deserialize
File.open('game.yml', 'r') do |f|
loaded_game = YAML.load(f)
loaded_game.guess
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/431904.html
