F# 使用匹配的lambda表达式
我试图使用lambda表达式来帮助我返回一个值,但我得到一个错误 该函数获取的图形太多,或用于 函数不是预期的 以下是示例代码:F# 使用匹配的lambda表达式,f#,F#,我试图使用lambda表达式来帮助我返回一个值,但我得到一个错误 该函数获取的图形太多,或用于 函数不是预期的 以下是示例代码: match isTrue with | true -> 1 | false -> (fun () -> 2) //<----Error 匹配是否正确 |正确->1 |false->(fun()->2)/对于F#来说是个新手,我假设: (fun () -> 2) 将在匹配表达式中自动执行。我只需要像中那样编写所需的代码 match i
match isTrue with
| true -> 1
| false -> (fun () -> 2) //<----Error
匹配是否正确
|正确->1
|false->(fun()->2)/对于F#来说是个新手,我假设:
(fun () -> 2)
将在匹配表达式中自动执行。我只需要像中那样编写所需的代码
match isTrue with
| true -> 1
| false ->
let something = 48 + 3
something + 4
这里的主要问题是1
是int
,而函数不是。但是可能还有其他东西,在缺少的代码中(fun()->2)
只定义一个没有参数的函数,调用该函数时将返回2;您当然可以在函数定义后立即调用函数,但在这种情况下,为什么不首先返回2呢?实际代码比简单地返回int要详细一些。不过,您对缺少的单元作为参数的解释很有帮助。谢谢。即使它不仅仅是一个int;我仍然不明白调用一个刚刚创建的匿名函数和只做被调用匿名函数的当前主体(不管它是什么)有什么意义;现在我意识到我可以简单地写出所需的代码。作为F#的新手,无论出于何种原因,我假设我必须将多行代码打包到一个函数中,以便与match语句一起使用。可能只是C#和LINQ的宿醉。