- ベストアンサー
メソッドが定義されるタイミングについて
メソッドが定義されるタイミングについて ケース1 # 1 p cal(3) def cal(num) 1 + num end #2 p cal(3) ケース2 class test def cal(num) 1 + num end #3 p cal(3) end test = Test.new ケース1、2を通して、#2以外はcal()のメソッドが定義されていません。とい うエラーがでます。 なぜ#2のpだけは実行されて他のものは実行されないでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
メソッド定義(def~)は、実行文なので、def~を実行する必要があります。 #1 はdefの実行前なので、未定義です。 ケース2で定義しているcalは、Testクラスのインスタントメソッドなので、 呼び出すとすれば、Test.new.cal(3) ですね。 class Test def self.cal(num) 1 + num end #3 p cal(3) end だと、calはTestクラスのクラスメソッドなので、クラス定義の中ではcal(3)で呼び出せます。 クラス定義の外で呼び出すには、Test.cal(3) 。 入門書の読み込みが足りないのでは無いかと思います。
お礼
ありがとうございます。入門書を読み直してみます。