如何在Openstruct对象上使用"each"?

Dod*_*djs 17 ruby ruby-on-rails

我有这样的OpenStruct哈希:

#<OpenStruct object1={
                       "param1"=>"2", 
                       "param2"=>"1"
                     }, 
             object2={
                       "param1"=>"2", 
                       "param2"=>"1"
                     }, 
             object3={
                       "param1"=>"2", 
                       "param2"=>"1"
                     }...
Run Code Online (Sandbox Code Playgroud)

each该如何使用?

Ben*_*Lee 28

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

your_open_struct.marshal_dump.each{ |k,v| puts "#{k} => #{v}" }
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Ruby 2.0,您也可以像这样使用to_h:

your_open_struct.to_h.each{ |k,v| puts "#{k} => #{v}" }
Run Code Online (Sandbox Code Playgroud)

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