Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 无法循环哈希中的值_Ruby - Fatal编程技术网

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

我对Ruby很陌生。我正在拼凑这样的东西:

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,因此它当然有一个映射方法。