2009-12-01 65 views
6

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

+0

你能解释一点关于你想做什么?我的第一个倾向是创建一个包装调用load_file的类,然后提供配置文件中不存在的值。我希望能够提供更完整的解决方案。 – 2009-12-01 04:27:30

回答

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")