【发布时间】:2010-11-10 17:52:23
【问题描述】:
基本上,我已经有一个 Ruby 对象的实例,但我想从 yaml 更新我可以更新的任何实例变量。有一个 to_yaml 函数可以将我的对象转储到 yaml。我正在寻找相反的东西。例如,my_obj.from_yaml(yaml_stuff) 并让它从传入的 yaml 更新实例变量。
我是否需要在我的 from_yaml 函数中使用 YAML::load 并复制每个实例变量?如果是这种情况,是否有一个函数可以用来快速复制这些变量而无需大量输入?
Ruby 的 yaml 库是否已经有了一些东西,我可以将对象和 yaml 传递给它,它会做我想做的事吗?
为清晰而编辑
这是一个简单的对象,它将存储和加载非常简单的 yaml 兼容类型,例如字符串和整数。
我最终做了什么
虽然我回答了这个问题,但我想添加我最终做的事情,我的对象猴子补丁
class Object
def from_yaml(yml)
if (yml.nil?)
return
end
yml.instance_variables.each do |iv|
if (self.instance_variable_defined?(iv))
self.instance_variable_set(iv, yml.instance_variable_get(iv))
end
end
end
end
【问题讨论】: