2012-05-18 31 views
-1

我對Ruby很新穎。我正在湊合這樣的事情:無法在散列值中循環訪問

in_msg.updateComments.map{|c| c.each} do |comment| 

in_msg.updateComments是一個散列。

,但我得到的錯誤:

SyntaxError: /Users/alexgenadinik/projects/cmply/cmply-app/app/models/linked_in_update.rb:65: syntax error, unexpected kDO, expecting kEND 
     in_msg.updateComments.map{|c| c.each} do |comment| 

不知道如何正確地做到這一點?

的數據來自於這樣的:

"updateComments"=>{"values"=>[{"comment"=>"Sweet", "person"=>{"siteStandardProfileRequest"=>{"url"=>"http://www.linkedin.com/profile?viewProfile=&key=23676551&authToken=FHXz&authType=name&trk=api*a140290*s148640*"}, 
+2

你在做什麼? –

+0

你想使用'map'或'each'嗎? –

+0

只是想通過評論循環 – GeekedOut

回答

1

看起來你感到困惑如何使用塊。

in_msg.updateComments.each do |key, value| 
    # code here... 
end 

OR

in_msg.updateComments.each {|key, value| code_here } 

更新:現在你發佈你的數據......看起來你有幾個嵌套哈希和數組。我建議在ruby數組和ruby哈希上找到一個好的教程。

+1

或者'.each',這取決於OP實際要做什麼。 –

+0

數據以散列形式出現,我嘗試循環散列中的註釋。評論也是一個散列(我剛剛更新了原來的問題),所以我只是想獲得評論。 – GeekedOut

+1

'each_pair'相當於'each'的散列,順便說一句。 –

1

我相信你正在尋找的語法是這樣的:

所有的
in_msg.updateComments.map { |c| 
    c.each do |comment| 
    # do stuff for each comment 
    end 
} 
2

第一。這裏是鏈接到Hash object。我們不需要map方法來遍歷散列。通過哈希迭代使用each,each_pair,each_key,each_value方法完成。請參閱先前提供的鏈接以獲取用法和語法。

in_msg.updateComments.each do |key, value| 
    p key #prints "values" string on first loop 
    value.each do |k, v| 
    p k #prints "comment", "person" 
    p v #prints "Sweet", "{"siteStandardProfileRequest"=>{"url"=>"http://www.linkedin.com/profile?viewProfile=&key=23676551&authToken=FHXz&authType=name&trk=api*a140290*s148640*"}" 
    end 
end 
+1

'Hash'繼承自'Enumerable',所以*當然*它有一個'map'方法。 –

+0

謝謝,編輯。 –