ruby - 为什么我的 ruby 循环没有结束?

标签 ruby loops error-handling sdk break

我是 ruby 的新手!
这是我的代码:

require 'sdk'

def get_teams_from_evident
   teams_api = SDK::Team.all
   teams = []
   loop do
     teams_api.each do |team|
       puts team.name
       teams << team
     end
     if teams_api.next_page? 
       team_api = teams_api.page(teams_api.next_page_number)
     else
       break
     end
   end
   teams
 end

当我用
$ruby my_script.rb

程序永不退出,循环仍然挂起...

我究竟做错了什么?

最佳答案

正如评论所言,循环可以结束的唯一方法是teams_api.next_page?返回false。如果循环永远持续循环,则可以推断teams_api.next_page?始终返回true。但这似乎不合逻辑,您的下一步应该是检查#next_page?的文档。

这不是循环挂起的唯一方法。我之前曾被愚弄过,以为我的循环在旋转,而实际上循环中的一个函数调用已冻结。您可以在循环开始时添加puts 'loop start'来确保,或者可以使用Byebug之类的gem来逐步执行代码。

关于ruby - 为什么我的 ruby 循环没有结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47340665/

相关文章:

Java 保龄球程序 - 添加第 10 帧

python - 如何在python中循环使用wget进行下载

php - 将goto替换为while循环?

ms-access - MS Access : How to bypass/suppress an error?

algorithm - 降低排序算法中的大 O 复杂度

javascript - 如何在 Google map 监听器中使用 bool?

javascript - rails 4 : Jquery code only renders sometimes

ruby - libiconv 在 OSX 10.8 安装 nokogiri 时丢失

Ruby compass 配置文件覆盖

ruby - 为什么在 Ruby 中使用 String#count 比使用 String#chars 计算字母更快?