You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Ruby循环执行break后从顶部重启?含嵌套循环方案咨询

解决方案:用外层循环实现循环重启 + 总计数控制

嘿,这个需求很好实现,你考虑用until嵌套的思路完全没问题!咱们直接把想法落地成可运行的代码,还优化了几个细节避免不必要的操作:

# 定义每轮输出的最大次数和总目标次数
MAX_PER_LOOP = 10
TARGET_TOTAL = 1000
total_counter = 0

# 外层until循环:只要总计数没到1000,就持续重启内部循环
until total_counter >= TARGET_TOTAL
  # 每轮开始前重置本轮计数器
  text_counter = 0
  puts "=== Starting a new cycle ==="

  # 内部循环:负责本轮输出hello
  loop do
    puts "hello"
    text_counter += 1
    total_counter += 1
    sleep(2)

    # 本轮达到上限时,跳出内部循环
    break if text_counter >= MAX_PER_LOOP
  end

  # 先检查是否已经完成总目标,避免最后一轮白等2小时
  break if total_counter >= TARGET_TOTAL

  puts "Cycle finished, sleeping for 2 hours..."
  sleep(7200) # 2小时 = 7200秒
end

puts "Test ended! Total 'hello' messages sent: #{total_counter}"

代码逻辑说明:

  • 用total_counter跟踪所有轮次的总输出次数,直到达到1000就终止整个程序
  • 外层until循环负责重启逻辑:每次内部循环结束(break后),只要总计数没达标,就休眠2小时然后重新启动内部循环
  • 每轮开始前重置text_counter,确保每轮都能从0开始计数到10
  • 加了一个额外的总计数检查,避免最后一轮刚好输出到1000次时,还白白休眠2小时

这样就能完美实现你想要的效果:每输出10次hello就休息2小时,循环往复直到总输出次数达到1000次为止。

内容的提问来源于stack exchange,提问作者DestroyedPixels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:03:04