小编heh*_*uhu的帖子

将哈希转换为对象

我试图将哈希和嵌套哈希转换为对象.

到目前为止,第一个哈希对象由此代码成功转换:

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
Run Code Online (Sandbox Code Playgroud)

但问题是,我还想转换嵌套的哈希对象.但无法成功.

h = Hashit.new({a: '123r', b: {c: 'sdvs'}})
 => #<Hashit:0x00000006516c78 @a="123r", @b={:c=>"sdvs"}> 
Run Code Online (Sandbox Code Playgroud)

@b={:c=>"sdvs"}在输出中看到这部分.我也想将它转换为对象.是的,如果是,那怎么样?

ruby hash ruby-on-rails

17
推荐指数
3
解决办法
2万
查看次数

标签 统计

hash ×1

ruby ×1

ruby-on-rails ×1