【问题标题】:Debug the script调试脚本
【发布时间】:2021-01-24 01:14:13
【问题描述】:

我需要指导来解决运行 Ruby 脚本时出现的错误,有一个模块正在产生错误。错误报错信息如下:

./7toEIS_v2.rb:304:in `+': 没有将 nil 隐式转换为 String (TypeError)

报错函数如下:

300 def showContOwner(cont_name)
301     File.open($physcontinfo).each_line { |i|
302         i.chomp!
303         cont,blah,model,ontap,loc,owner = i.split(",")
304         ($phys[cont] ||=[] << model + "," + ontap + "," + loc + "," + owner)
305     }
306     return cont_name + " - to be executed by " + $phys[cont_name][0].split(",")[3]
307 end

我已经通过更改它读取文件的代码进行了检查。

此代码也是为早期版本的 Ruby 编写的,目前我使用的是以下版本:

ruby 2.6.5p114(2019-10-01 修订版 67812)[x86_64-darwin15

【问题讨论】:

  • 变量modelontaplocowner 之一是nil。你检查过i 崩溃时的值吗?
  • 请阅读ericlippert.com/2014/03/05/how-to-debug-small-programs,并解释您对错误含义的理解。
  • 根据提供的信息,我无法诊断您的问题,但顺便说一句,您可以写cont,_,s = "a,b,c,d,e,f".split(',',3) #=&gt; ["a", "b", "c,d,e,f"],在这种情况下cont #=&gt;"a"s #=&gt; "c,d,e,f",允许您写($phys[cont] ||=[]) &lt;&lt; s

标签: ruby


【解决方案1】:

如果它仍然开放,我可能会查看https://github.com/deivid-rodriguez/byebughttps://github.com/pry/pry。或者就此而言,任何其他允许您逐步检查代码的调试工具^^ 没有更多的上下文,我们不可能确定确切的问题。

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2014-06-21
    相关资源
    最近更新 更多