如何在ruby中将哈希值转换为结构体?
考虑到这一点:
h = { :a => 1, :b => 2 }我想要一个这样的结构:
s.a == 1
s.b == 2发布于 2012-08-15 07:38:39
如果它不一定要是Struct,而是可以是OpenStruct
pry(main)> require 'ostruct'
pry(main)> s = OpenStruct.new(h)
=> #<OpenStruct a=1, b=2>
pry(main)> puts s.a, s.b
1
2发布于 2014-10-01 07:22:54
如果您已经定义了一个struct,并且您希望使用散列实例化一个实例:
Person = Struct.new(:first_name, :last_name, :age)
person_hash = { first_name: "Foo", last_name: "Bar", age: 29 }
person = Person.new(*person_hash.values_at(*Person.members))
=> #<struct Person first_name="Foo", last_name="Bar", age=29>发布于 2012-08-15 07:59:58
由于哈希键顺序在Ruby 1.9+中是有保证的:
Struct.new(*h.keys).new(*h.values)https://stackoverflow.com/questions/11962192
复制相似问题