2017-01-25 10 views
1

私はグーグルを試みて、stackoverflowを見て、まだそれがうまくいかない理由を理解できませんでした。基本的に、このコード行は、命令のラインを通じてfile.txtをループで読み込むテキストファイルのNoMethodError: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 

これは、私はあなたがあなたの変数を初期化する必要が

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 

答えて

2
line_num += 1 

LINE_NUMが定義されていないので、それがnilである

line_num = line_num + 1 

に相当します - 修正は、ファイルを開く前に0として、それを初期化するだろう、またはあなたが何かを行うことができますlike:

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

を得た誤りであります。 line_numない限り

line_num += 1 

は、以前、それは基本的に以前arrayを定義していない場合、これがまた失敗しますline_num = nil + 1

と同じことだ、これは失敗します定義され、あなたが持っていた場合は、そこだろういいえポイントto_aを呼び出します。

array.to_a.push line.split(" ") 
関連する問題