【一人 bugs.ruby Advent Calendar 2021】[Feature #12495] Make "private" return the arguments again, for chaining【9日目】
一人 bugs.ruby Advent Calendar 2021 9日目の記事になります。
public / private / protected
の戻り値をレシーバから引数を返すようにする提案です。
[Feature #12495] Make "private" return the arguments again, for chaining
public / private / protected
の戻り値をレシーバから引数を返すようにする提案です。
class X def hoge; end p private :hoge # 現在の挙動 => X # 変更する挙動 => :hoge end
これは以下のように private
の戻り値を別のメソッドに渡してチェーンしたい、ということらしい。
def cached(name) # Rewrite method to include a cache return name end # これは OK private cached def foo() end # こうもかけるようにしたい cached private def foo() end
確かにこういうのを書く時に順番で悩まなくてもよいのはよさそうな気がする。
あとは英文的にも後者のほうが自然、みたいな意見も聞きましたね。
これはマージされて Ruby 3.1 から以下のように挙動が変わるので注意する必要はあります。
class X def hoge; end p private :hoge # Ruby 3.0 => X # Ruby 3.1 => :hoge end