是否可以将函数的引用传递给F#中的另一个函数?具体来说,我想传递像
这样的lambda函数foo(有趣的x - > x ** 3)
更具体地说,我需要知道如何在我自己编写的函数中引用传递函数。
答案 0 :(得分:5)
是的,有可能。 manual有这个例子:
> List.map (fun x -> x % 2 = 0) [1 .. 5];;
val it : bool list
= [false; true; false; true; false]
答案 1 :(得分:2)
功能是F#中的头等公民。因此,您可以按照自己的意愿传递它们。
如果你有这样的功能:
let myFunction f =
f 1 2 3
和 f 是函数,然后 myFunction 的返回值 f 应用于1,2和3。
答案 2 :(得分:2)
将lambda函数传递给另一个函数的方式如下:
假设我们有一个简单的函数,如下所示:
let functionThatTakesaFunctionAndAList f l = List.map f l
现在您可以将lambda函数和列表传递给它:
functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]
在我们自己的函数functionThatTakesaFunctionAndAList
中,您可以将lambda函数称为f
,因为您调用了第一个参数f
。
函数调用的结果当然是:
float list = [1.0; 8.0; 27.0]