【发布时间】: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
【问题讨论】:
-
变量
model、ontap、loc或owner之一是nil。你检查过i崩溃时的值吗? -
请阅读ericlippert.com/2014/03/05/how-to-debug-small-programs,并解释您对错误含义的理解。
-
根据提供的信息,我无法诊断您的问题,但顺便说一句,您可以写
cont,_,s = "a,b,c,d,e,f".split(',',3) #=> ["a", "b", "c,d,e,f"],在这种情况下cont #=>"a"和s #=> "c,d,e,f",允许您写($phys[cont] ||=[]) << s。
标签: ruby