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

Ruby代码中puts @visited.inspect无输出问题排查求助

问题分析与解决

首先,你的代码里根本没进入输出语句所在的分支,原因是grid中的元素是字符串"1",但判断条件写的是grid[i][j] == 1(整数),两者永远不相等,所以if块里的代码完全没执行,自然看不到@visited的输出。

修复输出问题

把判断条件里的整数1改成字符串"1",修改后的代码片段:

if grid[i][j] == "1" && !@visited.include?([i,j])
   @visited << [i,j]
   puts @visited.inspect
   total_sum << bfs([i,j])
end

另外要确保你已经实现了bfs方法,否则代码执行到这里会报错。

调试工具与技巧

  • 基础输出调试:除了puts,可以用p方法(会自动调用inspect),比如p @visited,输出更简洁直观;也可以在关键节点打印变量值,比如先打印grid[i][j]的类型和值,确认判断逻辑是否正确:p "当前元素:#{grid[i][j]},类型:#{grid[i][j].class}"。
  • 使用binding.pry:这是Ruby最常用的调试工具,先安装pry gem(gem install pry),然后在代码中需要调试的位置插入binding.pry,程序运行到这里会暂停,你可以在交互式环境中查看@visited、i、j等变量的值,甚至执行代码片段。比如:
    if grid[i][j] == "1" && !@visited.include?([i,j])
       binding.pry # 程序会在这里暂停
       @visited << [i,j]
       total_sum << bfs([i,j])
    end
    
  • Ruby内置调试器:Ruby 2.5+自带debug库,不需要额外安装,在代码开头加require "debug",然后在需要断点的地方写debugger,运行代码后会进入调试会话,支持查看变量、单步执行等操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:27:40