在加载使用YAML序列化的对象时调用初始化

时间:2009-12-01 00:52:21

标签: ruby yaml

使用YAML.load_file时是否可以强制Ruby调用initialize方法?我想调用该方法,以便为我不序列化的实例变量提供值。我知道我可以将代码分解为一个单独的方法,并在调用YAML.load_file之后调用该方法,但我想知道是否有更优雅的方法来处理这个问题。

1 个答案:

答案 0 :(得分:3)

我认为你不能。由于您要添加的代码非常特定于要反序列化的类,因此您应该考虑在类中添加该功能。例如,让Foo成为要反序列化的类,可以添加类方法,例如:

class Foo
  def self.from_yaml( yaml )
    foo = YAML::load( yaml )
    # edit the foo object here
    foo
  end
end

myFoo = Foo.from_yaml( "myFoo.yaml" )