如何在Openstruct对象上使用“each”?

时间:2011-12-31 09:14:36

标签: ruby-on-rails ruby

我有这样的OpenStruct哈希:

#<OpenStruct object1={
                       "param1"=>"2", 
                       "param2"=>"1"
                     }, 
             object2={
                       "param1"=>"2", 
                       "param2"=>"1"
                     }, 
             object3={
                       "param1"=>"2", 
                       "param2"=>"1"
                     }...

如何在此使用each

1 个答案:

答案 0 :(得分:28)

OpenStruct有一个名为marshal_dump的方法,它返回基础哈希结构:

your_open_struct.marshal_dump.each{ |k,v| puts "#{k} => #{v}" }

如果您使用的是Ruby 2.0,您也可以使用to_h,如下所示:

your_open_struct.to_h.each{ |k,v| puts "#{k} => #{v}" }

与返回实际哈希结构的marshal_dump不同,to_h返回一个哈希,其中所有键都转换为符号以便于访问。