10

是否可以将对函数的引用传递给 F# 中的另一个函数?具体来说,我想传递 lambda 函数,例如

富(乐趣 x -> x ** 3)

更具体地说,我需要知道如何在我自己编写的函数中引用传递的函数。

4

3 回答 3

8

是的,有可能。该手册有这个例子:

> List.map (fun x -> x % 2 = 0) [1 .. 5];;

val it : bool list
= [false; true; false; true; false]
于 2008-09-04T16:05:28.273 回答
3

函数是 F# 中的一等公民。因此,您可以随心所欲地传递它们。

如果你有这样的功能:

let myFunction f =
    f 1 2 3

f是函数,则myFunction的返回值是f应用于 1,2 和 3。

于 2008-09-04T16:06:09.660 回答
3

将 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]
于 2008-09-13T12:55:41.867 回答