👋

[Feature #20580] Ruby にパイプライン演算子を追加する提案

2024/07/02に公開

[Feature #20580] Pipe Operator accepting lambda

  • Ruby にいわゆるパイプライン演算子を追加する提案
  • 以下のように記述すると左から順に Proc を適用していくようなイメージ
add_one = -> a { a + 1 }
add_two = -> a { a + 2 }

# add_two.call(add_one.call(2)) と等価
2 |> add_one |> add_two == 5
  • これ系は前提として『メソッドがシュッとオブジェクトとして変換できる』場合じゃないとなかなか成り立たない気がする
    • そもそも Proc オブジェクト自体を多様することは殆どないので上記のようなコードは遊ぶときぐらいしか利用できないと思う
  • コメントでも書かれているんですがメソッドをオブジェクトとして利用する場合は以下のように記述する必要があるのでイマイチなんですよねえ
2 |> &obj.method(:whatever)
  • 逆にいうと『メソッドをシュッとオブジェクトに変換できる』構文とかがあれば利用できそうではありそうかなあ
GitHubで編集を提案

Discussion