Code Fix

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

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

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

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

空欄を埋めて実行を通す

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

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

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

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

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