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