上級 › def self.method と def method を混同すると NoMethodError になる › パターン1
def self.method と def method を混同すると NoMethodError になる
def self.methodはクラスメソッド(ClassName.methodで呼ぶ)を定義し、def methodはインスタンスメソッド(インスタンス.methodで呼ぶ)を定義します。
1 class MathUtil 2 def _____square(n) ^ 3 n * n 4 end 5 end 6 7 puts MathUtil.square(4)
main.rb:7:in `<main>': undefined method `square' for class MathUtil (NoMethodError)
空欄を埋めて実行を通す
self.を付けないと、squareはインスタンスメソッドとして定義されます。MathUtil.squareのようにクラス自身から呼ぶには、def self.squareにする必要があります。
次の問題