2017-07-06 5 views
0

ここコードここ:NilClass(NoMethodError)

class Tech 
    attr_reader :content, :tech_hash 
    @tech_hash = Hash.new(0) 
    def initialize(content) 
    @content = content 
    showTech(content) 
    end 
    def showTech(content) 
    content.split.each do |word| 
    @tech_hash[word] += 1 
    end 
    @tech_hash = @tech_hash.sort_by{|k,v| -v}.to_h 
    p @tech_hash 
    end 
end 

class Digital 
    def analyze() 
    File.foreach('test.txt') do |content| 
     ob = Tech.new(content) 
    end 
    end 
end 

digi = Digital.new() 
digi.analyze() 

D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:10:in `block in showTech': undefined method `[]' for nil:NilClass (NoMethodError) 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:9:in `each' 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:9:in `showTech' 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:6:in `initialize' 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:22:in `new' 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:22:in `block in analyze' 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:20:in `foreach' 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:20:in `analyze' 
    from D:/graded-assignments/course01/module02/assignment-Calc-Max-Word-Freq/Tech.rb:29:in `<main>' 

答えて

1

@tech_hashがインスタンスメソッドの外で定義されているエラーである、どのようなこれをクラス変数にします。したがってshowTech以内に定義された@tech_hashインスタンス変数はまだありませんので、それはnil

を返すだけでインスタンス変数を初期化するためにinitialize方法に@tech_hashを移動:

def initialize(content) 
    @content = content 
    @tech_hash = Hash.new(0) 

    showTech(content) 
end 
+0

あなたはこれまで良い参考答えを知ることが起こるのか質問? : –

+0

これは、 "クラス変数"ではない "クラスインスタンス変数"になります。後者は、Rubyでは異なる意味を持ち、doubleで表されます'@@ var'。 – mudasobwa

+1

@mudasobwa:CueJörgW Mittagが表示され、「クラスインスタンス変数」というようなものがないことを伝えています:) –

関連する問題