上級 › def self.method と def method を混同すると NoMethodError になる › パターン3
def self.method と def method を混同すると NoMethodError になる
def self.methodはクラスメソッド(ClassName.methodで呼ぶ)を定義し、def methodはインスタンスメソッド(インスタンス.methodで呼ぶ)を定義します。
1 class ArrayUtil 2 def _____sum_all(list) ^ 3 list.sum 4 end 5 end 6 7 puts ArrayUtil.sum_all([1, 2, 3])
main.rb:7:in `<main>': undefined method `sum_all' for class ArrayUtil (NoMethodError)
空欄を埋めて実行を通す
「クラスの中で定義すればどちらの呼び方でも使えるはず」という思い込みは誤りです。self.の有無で完全に別のメソッドになります。
次の問題