【一人 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