Code Fix

中級private メソッドをレシーバ付きで呼ぶと NoMethodError になる › パターン1

private メソッドをレシーバ付きで呼ぶと NoMethodError になる

privateを付けたメソッドは、クラスの外からinstance.methodのようにレシーバを明示して呼び出すことができません。

 1  class Robot
 2    def status
 3      battery
 4    end
 5  
 6    private
 7  
 8    def battery
 9      "80%"
10    end
11  end
12  
13  puts Robot.new._______
                      ^
main.rb:13:in `<main>': private method `battery' called for an instance of Robot (NoMethodError)

空欄を埋めて実行を通す

広告
広告スロット(未設定)

private メソッドをレシーバ付きで呼ぶと NoMethodError になる

呼び出したい場合は、内部でそのメソッドを使うpublicなメソッド経由にする必要があります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)