NEPLg2 Tutorial - 19 - パイプ演算子 |>
Web Playground
Web Playground

パイプ演算子えんざんし |>

a |> f bf a b と同じ意味です。
左辺の値を、右辺の関数呼び出しの第1引数へ渡すため、変換の流れを左から右へ読めます。

基本: 左辺を第1引数へ注入する

TEST
#entry main
#indent 4
#target std

#import "core/math" as *
#import "core/result" as *
#import "std/test" as *

fn main <()*>i32> ():
    let a <i32> 1 |> add 2
    let b <i32> add 1 add 2 3 |> add 4
    let checks <Vec<Result<(),str>>>:
        checks_new
        |> checks_push check_eq_i32 3 a
        |> checks_push check_eq_i32 10 b
    let shown <Vec<Result<(),str>>> checks_print_report checks;
    checks_exit_code shown

複数段の変換を連結する

式を左から上から順に追えるので、段階的な変換が読みやすくなります。

TEST
#entry main
#indent 4
#target std

#import "core/math" as *
#import "core/result" as *
#import "std/test" as *

fn main <()*>i32> ():
    let v <i32> block:
        3
        |> mul 2
        |> add 6
    let checks <Vec<Result<(),str>>>:
        checks_new
        |> checks_push check_eq_i32 12 v
    let shown <Vec<Result<(),str>>> checks_print_report checks;
    checks_exit_code shown

補足

  • |> の右辺は「呼び出し可能な式」である必要があります。
  • インデントルール上、|> 行だけを深くしないようにします。