【发布时间】:2015-01-04 18:03:53
【问题描述】:
我正在尝试将散列和嵌套散列转换为对象。
到目前为止,此代码已成功转换第一个哈希对象:
class Hashit
def initialize(hash)
hash.each do |k,v|
self.instance_variable_set("@#{k}", v)
self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)})
end
end
end
但问题是,我也想转换嵌套的哈希对象。但做不到。
h = Hashit.new({a: '123r', b: {c: 'sdvs'}})
=> #<Hashit:0x00000006516c78 @a="123r", @b={:c=>"sdvs"}>
在输出中看到@b={:c=>"sdvs"}这部分。我还想将其转换为对象。如果可以,可以吗?
【问题讨论】:
-
如果您要求
h具有实例变量[:@a, :@b, :@c],正如@Ben 和我所假设的那样,您选择的答案不正确。
标签: ruby-on-rails ruby hash