如何正确使用 |> 运算符?
how to correctly use |> operator?
当我尝试在 elm
中使用 |>
运算符时出现错误
kl : List Float
kl =
List.map toFloat (List.range 1 10)
kll : Float
kll =
let
half x =
x / 2
in
List.sum (List.map half (List.map toFloat (List.range 1 10)))
下面的代码我使用 |>
并得到一个错误:
klpipe : List Float
klpipe =
1 10 |> List.range |> toFloat |> List.map
|>
只能用于将左侧的单个参数应用于右侧的函数。这里有几个例子可以让你直观地了解它是如何工作的:
x |> f == f x
y |> f x == f x y
f x |> g == g (f x)
您 可以 使用 |>
将多个参数应用于单个函数,但您必须一次一个地以相反的顺序进行,并使用括号来违背其自然结合性:
10 |> (1 |> List.range) |> (toFloat |> List.map)
此处括号内的表达式均计算为“适合”管道右侧的函数。如果没有括号,1 |> 10 |> List.range
将等同于 `List.range (10 1).
但是我觉得这不是很可读,而是会更谨慎地使用管道运算符:
List.range 1 10 |> List.map toFloat
仅仅因为你可以让它看起来像钉子并不意味着你应该用锤子敲它。
当我尝试在 elm
中使用|>
运算符时出现错误
kl : List Float
kl =
List.map toFloat (List.range 1 10)
kll : Float
kll =
let
half x =
x / 2
in
List.sum (List.map half (List.map toFloat (List.range 1 10)))
下面的代码我使用 |>
并得到一个错误:
klpipe : List Float
klpipe =
1 10 |> List.range |> toFloat |> List.map
|>
只能用于将左侧的单个参数应用于右侧的函数。这里有几个例子可以让你直观地了解它是如何工作的:
x |> f == f x
y |> f x == f x y
f x |> g == g (f x)
您 可以 使用 |>
将多个参数应用于单个函数,但您必须一次一个地以相反的顺序进行,并使用括号来违背其自然结合性:
10 |> (1 |> List.range) |> (toFloat |> List.map)
此处括号内的表达式均计算为“适合”管道右侧的函数。如果没有括号,1 |> 10 |> List.range
将等同于 `List.range (10 1).
但是我觉得这不是很可读,而是会更谨慎地使用管道运算符:
List.range 1 10 |> List.map toFloat
仅仅因为你可以让它看起来像钉子并不意味着你应该用锤子敲它。