为什么数据参数最后

时间:2015-02-05 15:16:33

标签: f#

为什么F#中的数据参数最后会出现,如下面的代码片段所示:

let startsWith lookFor (s:string) = s.StartsWith(lookFor)
let str1 = 
    "hello"
    |> startsWith "h"

1 个答案:

答案 0 :(得分:1)

我认为你的部分答案在你的问题中。 |>(正向管道)运算符允许您在调用函数之前指定函数的最后一个参数。如果参数顺序相反,则不会起作用。这种功能的最好例子是链接在列表上运行的函数。每个函数都以列表作为最后一个参数,并返回一个可以传递给下一个函数的列表。

来自http://www.tryfsharp.org/Learn/getting-started#chaining-functions

[0..100]
|> List.filter (fun x -> x % 2 = 0)
|> List.map (fun x -> x * 2)
|> List.sum
     

|>运算符允许您通过指定最后一个来重新排序代码   调用之前函数的参数。这个例子是   在功能上等同于以前的代码,但它读取更多   干净。首先,它创建一个数字列表。然后,它管道列表   过滤掉赔率的数字。接下来,它导致管道   List.map加倍。最后,它管道加倍数   List.sum将它们添加到一起。 Forward Pipe Operator重组   函数链,以便您的代码读取您的思考方式   问题而不是强迫你从里到外思考。

正如评论中所提到的,还有currying的概念,但我并不认为这与链接函数一样容易掌握。