为什么我的红宝石循环没有结束?

时间:2017-11-16 23:07:39

标签: ruby loops error-handling sdk break

我是红宝石的新手! 这是我的代码:

<script>
  export default {
    computed: {
      hasLoadedData() {
        // Or whatever criteria you decide on to represent that the
        // app state has finished loading.
        return this.$store.state.something !== null;
      }
    }
  }
</script>

<template>
  <div id="app">
    <router-view v-if="hasLoadedData" />
    <p v-else>Loading...</p>
  </div>
</template>

当我用

运行它时
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

程序永远不会退出,循环仍然悬挂......

我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如评论所说,你的循环结束的唯一方法是teams_api.next_page?返回false。如果循环继续循环,那么您可以推断teams_api.next_page? 总是返回true。这似乎不合逻辑,您的下一步应该是查看#next_page?

的文档

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