我觉得我在这里误解了一些东西.
假设我有数字1,2,3和4,我想要添加5和6.常识告诉我List.append它,但当我尝试时,我得到:
[1; 2; 3; 4] |> List.append [5; 6] ;;
val it:int list = [5; 6; 1; 2; 3; 4]
为什么它会将值添加到我的列表中而不是附加它们?
Gus*_*Gus 16
它并不是真正的前期.您正在通过使用正向管道运算符更改参数显示的顺序,在这种情况下会反转顺序,但如果您在不更改顺序的情况下编写函数,则更有意义:
List.append [1;2;3;4] [5;6] // [1;2;3;4;5;6]
Run Code Online (Sandbox Code Playgroud)
请注意,这与Array.append和一致Seq.append.它也与字符串连接运算符作为函数一致(+).
前向运算符将最后一个参数"移动"到表达式的开头,在某些情况下可能需要(管道),但在其他情况下可能会令人困惑,例如,(/)如果将分区用作函数的一部分,则将其作为函数的一部分.管道,带有前进操作员:
5 |> (/) 10
Run Code Online (Sandbox Code Playgroud)
它评估到10 / 5但乍一看你可能会得到一个错误的印象,它会做5除以10.
这被解析为
[1;2;3;4] |> (List.append [5;6])
Run Code Online (Sandbox Code Playgroud)
并List.append [5;6]返回一个int list -> int list将输入附加到列表的函数[5;6].然后,您将列表[1;2;3;4]应用于此功能.