Ruby YAML 序列化和反序列化
Ruby YAML serialization and unserialization
我对面向对象项目 Hangman - 序列化部分有疑问。我在序列化方法中保存了我的代码,但是当我尝试反序列化它时,我遇到了问题。我在 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
回复:https://replit.com/@Burakkepuc/Hangman#main.rb
GitHub : https://github.com/Burakkepuc/Hangman
我认为它实际上工作正常。
YAML.load
returns 一个 不同的 游戏实例。您可以调用该实例的方法,但您无权访问属性。
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
添加一个reader给你的游戏class然后上面会在新加载的游戏实例中报告长度值。
attr_reader :length
我不确定你想对加载的游戏做什么,但也许你只是想在上面调用 guess
?
def deserialize
File.open('game.yml', 'r') do |f|
loaded_game = YAML.load(f)
loaded_game.guess
end
end
我对面向对象项目 Hangman - 序列化部分有疑问。我在序列化方法中保存了我的代码,但是当我尝试反序列化它时,我遇到了问题。我在 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
回复:https://replit.com/@Burakkepuc/Hangman#main.rb
GitHub : https://github.com/Burakkepuc/Hangman
我认为它实际上工作正常。
YAML.load
returns 一个 不同的 游戏实例。您可以调用该实例的方法,但您无权访问属性。
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
添加一个reader给你的游戏class然后上面会在新加载的游戏实例中报告长度值。
attr_reader :length
我不确定你想对加载的游戏做什么,但也许你只是想在上面调用 guess
?
def deserialize
File.open('game.yml', 'r') do |f|
loaded_game = YAML.load(f)
loaded_game.guess
end
end