2016-08-24 11 views
0

どうすればエラーNoMethodError: undefined method '+' for nil:NilClassが返されますが、puts testの行は値が初期化されていることを知っていますか?attr_accessorでも@を使わなくてもインスタンス変数の値に常にアクセスできない

class TestClass 
    attr_accessor :test 
    def initialize() 
    @test = 1 
    end 

    def testFn 
    puts test 
    test = test + 1 
    end 
end 

t = TestClass.new 
t.testFn 

私は@testtestを変更するが、私は、私はattr_accessor :test

答えて

1

を持っていた場合は、アクセサ/ライタを通じてインスタンス変数に値を代入している場合は、あなたが使用していると、私は持っていなかったと思った場合にも動作しますselfそれ以外の場合、Rubyインタプリタはそれがローカル変数だと考えます。あなたのケースでは、testFnコードは次のようになります:

+0

attr_accessorを持っていて、それ以外の値を直接使用しているときにselfを使って値を割り当てるのは一般的ですか?あるいは、人々は一般的に、混乱を少なくし、自己を逃す機会が少ないように、割り当てと読書の両方に自己を使用しますか? @kallax – user1136342

関連する問題