Code Fix

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

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

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

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

空欄を埋めて実行を通す

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

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

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

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

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