Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 如何使用嵌套的每个块从While循环中断_Ruby - Fatal编程技术网

Ruby 如何使用嵌套的每个块从While循环中断

Ruby 如何使用嵌套的每个块从While循环中断,ruby,Ruby,我希望能够从一个while循环中解脱出来,该循环的每个块都嵌套了一个while循环 在下面的示例方法中: @客户端表示一个API客户端 Recommendated_photos是一个API调用,返回一个由20张未链接的推荐照片组成的数组。在随后的API调用中,此阵列可以填充新的推荐照片,直到所有照片都被喜欢为止 def like_recommended_photos(limit = nil) liked_photos_count = 0 recommended_photos = @cli

我希望能够从一个while循环中解脱出来,该循环的每个块都嵌套了一个while循环

在下面的示例方法中:

@客户端表示一个API客户端

Recommendated_photos是一个API调用,返回一个由20张未链接的推荐照片组成的数组。在随后的API调用中,此阵列可以填充新的推荐照片,直到所有照片都被喜欢为止

def like_recommended_photos(limit = nil)
  liked_photos_count = 0
  recommended_photos = @client.recommended_photos
  while recommended_photos
    recommended_photos.each do |photo|
      @client.like photo
      liked_photos_count += 1
      break if limit == liked_photos_count
    end
    recommended_photos = @client.recommended_photos
  end
end
我想做的是有选择地对喜欢的照片数量设置一个限制

所以,如果我打电话给喜欢的、推荐的、照片5,我只希望有5张照片被喜欢。然而,这最终会喜欢上所有可能的照片,我不知道如何正确地停止while循环


任何帮助都将不胜感激。非常感谢。

最好的办法是完全消除嵌套循环。我想你这么做是因为推荐的照片可能为零

如果是这样,您可以尝试以下方法:

def like_recommended_photos(limit = nil)
  liked_photos_count = 0
  recommended_photos = @client.recommended_photos || []
  recommended_photos.each do |photo|
    @client.like photo
    liked_photos_count += 1
    break if limit == liked_photos_count
  end
  recommended_photos = @client.recommended_photos
end
这样,推荐的照片永远不会为零,循环将在空数组上运行,结果什么也不做,这样可以避免混乱的捕获/抛出逻辑