2017-01-25 4 views
1

Ich habe versucht zu googeln und durch stackoverflow und sah immer noch nicht herausfinden, warum es nicht funktioniert. Im Wesentlichen liest diese Zeile Code in einem datei.txt und Schleife durch die Linie der Anweisungen auf dem TextNoMethodError: undefinierte Methode `+ 'für Nil: NilClass

# 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 

Dies ist der Fehler-Datei, die ich

bekam
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 

Antwort

2
line_num += 1 

entspricht

line_num = line_num + 1 

Da line_num nicht definiert ist, es ist gleich Null - das Update wäre es als 0 zu initialisieren, bevor die Datei zu öffnen, oder Sie könnten etwas tun wie:

array = File.open('file.txt').each.map{ |line| line.split(" ")} 
3

Sie haben Ihre Variablen initialisieren .

line_num += 1 

Sofern line_num definiert vorher dies fehlschlagen, es ist im Grunde das gleiche wie line_num = nil + 1

Dies wird auch fehlschlagen, wenn Sie nicht vorher array definiert haben, und wenn Sie hatte, dann würde es sein kein Punkt ruft to_a.

array.to_a.push line.split(" ") 
Verwandte Themen