• ベストアンサー

メソッドが定義されるタイミングについて

メソッドが定義されるタイミングについて ケース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だけは実行されて他のものは実行されないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.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) 。 入門書の読み込みが足りないのでは無いかと思います。

tukutukuhosi
質問者

お礼

ありがとうございます。入門書を読み直してみます。

関連するQ&A