Ruby 2.7 で private メソッドが self. 付きで呼び出せるようになる
Ruby 2.7 で private メソッドが self.
付きで呼び出せるようになる予定です。
- Feature #16123: Allow calling a private method with
self.
- Ruby master - Ruby Issue Tracking System - Feature #11297: Allow private method of self to be called - Ruby master - Ruby Issue Tracking System
- [Feature #16123] calling private methods with
self.
by nobu · Pull Request #2474 · ruby/ruby · GitHub
Ruby 2.6
class X def hoge # Error # private method `value' called for #<X:0x0000561963d99e78 @value=42> (NoMethodError) self.value end private def value 42 end end
Ruby 2.7
class X def hoge # OK self.value end private def value 42 end end
もちろん self.
以外のレシーバで呼び出した場合は依然としてエラーになります。
class X private def value 42 end end # Error # private method `value' called for #<X:0x0000561963d99e78 @value=42> (NoMethodError) p X.new.value
個人的にはそこまで必須ではないんですが、変数名と同じ名前の private メソッドを呼びたい場合に便利かなあって感じですかねえ。
あとは self.value = 42
ってかけるのに self.value
ってかけないのはなんか統一感がない気はしていたのでそういう意味ではいいんじゃないですかねー。