Ruby 无法循环哈希中的值
我对Ruby很陌生。我正在拼凑这样的东西:Ruby 无法循环哈希中的值,ruby,Ruby,我对Ruby很陌生。我正在拼凑这样的东西: in_msg.updateComments.map{|c| c.each} do |comment| "updateComments"=>{"values"=>[{"comment"=>"Sweet", "person"=>{"siteStandardProfileRequest"=>{"url"=>"http://www.linkedin.com/profile?viewProfile=&key=236
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*"},
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|
你知道如何正确地做到这一点吗
数据如下所示:
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*"},
看起来您对如何使用块感到困惑
in_msg.updateComments.each do |key, value|
# code here...
end
或
更新:现在你发布了你的数据。。。看起来您有几个嵌套的哈希和数组。我建议您找到一本关于ruby数组和ruby哈希的好教程。我相信您正在寻找的语法如下:
in_msg.updateComments.map { |c|
c.each do |comment|
# do stuff for each comment
end
}
首先。这里是到的链接。我们不需要map方法来迭代散列。通过散列的迭代使用each、each_对、each_键、each_值方法完成。有关用法和语法,请参阅前面提供的链接
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
你是在尝试使用map还是each?只是尝试循环浏览注释有一个与do相对应的结尾?或者可能。每个,取决于OP实际尝试执行的操作。数据以散列形式出现,我尝试循环浏览hash中的注释。注释也是一个散列。我刚刚更新了原始问题,所以我只是尝试获取注释。顺便说一句,每个\u对都相当于每个for散列。散列继承自Enumerable,因此它当然有一个映射方法。