gpt4 book ai didi

f# - F# 中的无参数 lambda 表达式

转载 作者:行者123 更新时间:2023-12-02 05:42:17 24 4
gpt4 key购买 nike

我正在寻找一种在 F# 中定义无参数 lambda 表达式的方法,就像下面的 C# 示例一样。

var task = () => {
int x = 3;
DoSomething(x);
}

我尝试了以下方法

let task = fun _ -> 
let x = 3
doSomething x

它编译但它给了我 task : ('a -> unit) 我实际上正在寻找的是 task : (unit -> unit)

MSDN Documentation不谈这个。我在这里错过了什么?

最佳答案

只是

let task = fun () -> // whatever you need

你的例子是:

let task = fun () ->
let x = 3
DoSomething(3)

假设 DoSomething 的类型是 int -> unit - 如果它返回您需要的其他内容

let task = fun () ->
let x = 3
DoSomething(3) |> ignore

获取类型 unit -> unit

备注:通常你不会写 let task = fun () -> ... 而只是 let task() = ...

你错过的东西:如果你写 fun _ -> () 你是说你想要一些你不介意的参数 - 所以 F# 将采用最一般的(被命名为 'a here) - 这将包括 unit!()unit 类型的唯一值(或多或少来自 C# 的 void ... 但在 F# 中是真正的类型)

关于f# - F# 中的无参数 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com