F# 中的传递函数

发布于 2024-07-04 22:30:50 字数 132 浏览 8 评论 0原文

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

foo(fun x -> x ** 3)

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

Is it possible to pass a reference to a function to another function in F#? Specifically, I'd like to pass lambda functions like

foo(fun x -> x ** 3)

More specifically, I need to know how I would refer to the passed function in a function that I wrote myself.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葬花如无物 2024-07-11 22:30:51

将 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]

Passing a lambda function to another function works like this:

Suppose we have a trivial function of our own as follows:

let functionThatTakesaFunctionAndAList f l = List.map f l

Now you can pass a lambda function and a list to it:

functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]

Inside our own function functionThatTakesaFunctionAndAList you can just refer to the lambda function as f because you called your first parameter f.

The result of the function call is of course:

float list = [1.0; 8.0; 27.0]
酒解孤独 2024-07-11 22:30:51

函数是 F# 中的一等公民。 因此,您可以按照自己的意愿传递它们。

如果您有这样的函数:

let myFunction f =
    f 1 2 3

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

Functions are first class citizens in F#. You can therefore pass them around just like you want to.

If you have a function like this:

let myFunction f =
    f 1 2 3

and f is function then the return value of myFunction is f applied to 1,2 and 3.

灵芸 2024-07-11 22:30:50

对的,这是可能的。 手册有以下示例:

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

val it : bool list
= [false; true; false; true; false]

Yes, it is possible. The manual has this example:

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

val it : bool list
= [false; true; false; true; false]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文