我尝试使用谷歌搜索并查看stackoverflow仍然无法弄清楚为什么它不起作用。本质上,这行代码读入file.txt并循环遍历文本文件
上的指令行# Load instruction in an array
File.open('file.txt').each do |line|
line_num += 1
array.to_a.push line.split(" ")
end
# Loop through the array of Instructions
array.each do |line|
instruction = line[0]
value = line[1].to_i
这是我得到的错误
NoMethodError: undefined method `+' for nil:NilClass
method block in <main> in VirtualMemory.rb at line 3
method each in VirtualMemory.rb at line 2
method <main> in VirtualMemory.rb at line 2
答案 0 :(得分:3)
您必须初始化变量。
line_num += 1
除非先前定义line_num
,否则这将失败,它与line_num = nil + 1
基本相同
如果你之前没有定义过array
,那么这也会失败,如果你有,那么就没有必要调用to_a
。
array.to_a.push line.split(" ")
答案 1 :(得分:2)
line_num += 1
相当于
line_num = line_num + 1
由于未定义line_num,因此它是nil - 修复将在打开文件之前将其初始化为0,或者您可以执行以下操作:
array = File.open('file.txt').each.map{ |line| line.split(" ")}