2012-01-06 12 views

答えて

16

見てみましょう:

class Test 
    def initialize; end 
end 

p Test.new.private_methods.sort.include?(:initialize) 

これはtrue出力し、そうinitializeはプライベートメソッドです。これは理にかなっていて、オブジェクトが作成された場合にのみnewクラスメソッドによって呼び出されます。しかし、それは単純な変数の初期化よりも多くがなければ問題につながる可能性があり、このようなコンストラクタを誤って使用

class Test 
    def initialize 
    @counter = 0 
    end 

    def reset! 
    initialize 
    end 
end 

:私たちが望むならば、我々はこのような何かを行うことができます。

+6

をあなたはobj.send'によってオブジェクトの 'initialize'も呼び出すことができます。 –

+1

@undur_gongor:それはどんなプライベートメソッドでもうまくいきます。 –

4

クラス内のinitializeメソッドは自動的にプライベートになります。

あなたが使用してそれを確認することができます: `:(初期化)

puts ClassName.private_methods.sort 
関連する問題