Ruby 如何使用嵌套的每个块从While循环中断
我希望能够从一个while循环中解脱出来,该循环的每个块都嵌套了一个while循环 在下面的示例方法中: @客户端表示一个API客户端 Recommendated_photos是一个API调用,返回一个由20张未链接的推荐照片组成的数组。在随后的API调用中,此阵列可以填充新的推荐照片,直到所有照片都被喜欢为止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
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
这样,推荐的照片永远不会为零,循环将在空数组上运行,结果什么也不做,这样可以避免混乱的捕获/抛出逻辑