2014-11-27 3 views
2

OpenStruct 데이터 구조의 배열을 가지고 있습니다. 그러나 나는 시도하고 그들에 액세스 할 때 나는 단지 예를 들어 countryRuby와 OpenStruct는 일부 데이터에만 액세스 할 수 있습니다.

array = [ 
#<OpenStruct country="United States", visits="202", visitBounceRate="59.900990099009896", avgTimeOnSite="151.85148514851485", newVisits="176", percentNewVisits="87.12871287128714", pageviewsPerVisit="2.9207920792079207">, 
#<OpenStruct country="Germany", visits="155", visitBounceRate="43.87096774193549", avgTimeOnSite="167.43870967741935", newVisits="104", percentNewVisits="67.0967741935484", pageviewsPerVisit="3.935483870967742">, 
#<OpenStruct country="Brazil", visits="105", visitBounceRate="44.761904761904766", avgTimeOnSite="227.2095238095238", newVisits="77", percentNewVisits="73.33333333333333", pageviewsPerVisit="3.5142857142857142">, 
#<OpenStruct country="United Kingdom", visits="71", visitBounceRate="46.478873239436616", avgTimeOnSite="216.91549295774647", newVisits="36", percentNewVisits="50.70422535211267", pageviewsPerVisit="3.464788732394366"> 
] 

array.each do |openstruct| 
    put openstruct.country 
end 

반환 국가의 모든 액세스 할 수 있지만 내가 할 경우 빈 줄의

array.each do |openstruct| 
    put openstruct.newVisits 
end 

많은 반환 .

+0

어떻게 구성합니까? – dax

답변

0

이 경우에 특별한 것은 없습니다. 신청서의 앞부분에 있어야합니다 :

irb(main):002:0> require 'ostruct' 
=> true 
irb(main):003:0> OpenStruct.new 
=> #<OpenStruct> 
irb(main):004:0> os = _ 
=> #<OpenStruct> 
irb(main):005:0> os.country = :russia 
=> :russia 
irb(main):006:0> os.newVisits = 60 
=> 60 
irb(main):007:0> os.country 
=> :russia 
irb(main):008:0> os.newVisits 
=> 60 
+2

네 말이 맞아. OpenStruct 중 하나에서'.marshal_dump'를했는데 반환 된 해시가 맞지 않습니다. –