有没有一个方法可以将标准ruby结构的数据作为哈希(成员,值对)返回?看到结构和散列具有非常相似的用例,我很惊讶没有这样的方法存在.或者是,我只是太盲目了?
它很容易实现(我现在已经这样做了),但是在标准库中缺少这样的功能,让我觉得我可能还没有真正掌握ruby中的结构概念.
tok*_*and 36
(Ruby <= 1.9.3)OpenStruct具有OpenStruct#marshall_dump并Struct具有Struct#each_pair(用于to_a获取对和Hash+ to_a以获取哈希):
Person = Struct.new(:name, :age)
person = Person.new("Jamie", 23)
person_hash = Hash[person.each_pair.to_a]
#=> {:age=>23, :name=>"Jamie"}
Run Code Online (Sandbox Code Playgroud)
使用Ruby 2.0,事情变得更容易:Struct#to_h,OpenStruct#to_h:
Person = Struct.new(:name, :age)
person = Person.new("Jamie", 23)
person_hash = person.to_h
#=> {:age=>23, :name=>"Jamie"}
Run Code Online (Sandbox Code Playgroud)