上級 › def self.method と def method を混同すると NoMethodError になる › パターン5
def self.method と def method を混同すると NoMethodError になる
def self.methodはクラスメソッド(ClassName.methodで呼ぶ)を定義し、def methodはインスタンスメソッド(インスタンス.methodで呼ぶ)を定義します。
1 class NumberUtil 2 def _____double(n) ^ 3 n * 2 4 end 5 end 6 7 puts NumberUtil.double(5)
main.rb:7:in `<main>': undefined method `double' for class NumberUtil (NoMethodError)
空欄を埋めて実行を通す
self.を付けたメソッドはクラス自身に属し、self.を付けないメソッドはインスタンスに属します。混同すると呼び出し方が合わなくなります。
次の問題