中級 › 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)
空欄を埋めて実行を通す
「同じインスタンスならレシーバを付けても呼べるはず」という思い込みは誤りです。レシーバの有無だけで判定されます。
次の問題