Ruby2.7のpipeline operatorで+や-等の演算子をはじいたのはなぜなんでしょうか?
BRANK

Pipeline operatorはまだホットな状態で(2019–06–15現在)、今後も変更が加わる可能性が高いのですが、現状において質問の意味を推測すると、pipeline operator ( >) において、当初1 >+ 2 #=> 3 (1.+(2) と同じ意味に解釈されるから) となる仕様だったのを禁止したのはなぜかということですが、単に読みやすさに貢献しないからです。それだけでなく積極的に読みにくさに貢献してますね。Pipeline operatorは以下の指摘があり、もっともだと思う点もあるのでなんらかの対処を考えています。ElixirやElm、F#などの言語では a > b は b(a) の意味であり、同じ演算子で意味が異なるのは良くない。今後、Rubyで上記の意味の演算子を追加したくなった時に既に > 演算子が使われているのは困るa = 1 > b が a = (1 > b) ではなく (a=1) > b と解釈されるのは嬉しくない。必要性が高くない(1)については、Rubyにおいてはレシーバーはメソッドの第1引数と考えることができるので、 a.b(1) は他言語における b(a,1) のようなものなので a > b(1) が a.b(1) と解釈されることにあまり抵抗はなかったのですが、Rubyユーザーのメンタルモデルが意外に柔軟性にかけていたのは…

jp.quora.com
Related Topics: Ruby Elixir F#