没有将标准 ruby 结构的数据作为散列(成员、值对)返回的方法是否有正当理由? 看到结构和散列具有非常相似的用例,我很惊讶不存在这样的方法。或者是,我太盲目了?
它很容易实现(我现在已经这样做了),但是标准库中缺少这样的功能,让我觉得我可能没有真正掌握 ruby 中结构的概念。
最佳答案
Ruby <= 1.9.3 有 OpenStruct#marshall_dump和 Struct#each_pair :
Person = Struct.new(:name, :age)
person = Person.new("Jamie", 23)
person_hash = Hash[person.each_pair.to_a]
#=> {:age=>23, :name=>"Jamie"}
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"}
关于ruby - 在 ruby 中以散列形式返回结构数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082423/