Code Fix

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

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

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

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

空欄を埋めて実行を通す

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

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

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

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

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