6
当使用YAML.load_file时,可以强制Ruby调用初始化方法吗?我想调用该方法以便为我不序列化的实例变量提供值。我知道我可以将代码分解到一个单独的方法中,并在调用YAML.load_file之后调用该方法,但我想知道是否有更好的方法来处理这个问题。加载用YAML序列化的对象时调用初始化
当使用YAML.load_file时,可以强制Ruby调用初始化方法吗?我想调用该方法以便为我不序列化的实例变量提供值。我知道我可以将代码分解到一个单独的方法中,并在调用YAML.load_file之后调用该方法,但我想知道是否有更好的方法来处理这个问题。加载用YAML序列化的对象时调用初始化
我不认为你可以。由于您要添加的代码对于正在反序列化的类非常具体,因此您应该考虑在该类中添加该功能。例如,让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")
你能解释一点关于你想做什么?我的第一个倾向是创建一个包装调用load_file的类,然后提供配置文件中不存在的值。我希望能够提供更完整的解决方案。 – 2009-12-01 04:27:30