对象表达式中的F#Lambda
我可以看到人们在中这样的对象表达式中使用lambdas,但我不太明白为什么下面的想法不起作用对象表达式中的F#Lambda,lambda,f#,Lambda,F#,我可以看到人们在中这样的对象表达式中使用lambdas,但我不太明白为什么下面的想法不起作用 type fooType = {flar : string; grib: int} let boundFoo = {flar = "hello"; grib = 1} let flack = {boundFoo with grib = fun () -> if boundFoo.flar = "hello" then 5 else 4} 据我所知,它不喜欢fun()->,但fun->和fun x
type fooType = {flar : string; grib: int}
let boundFoo = {flar = "hello"; grib = 1}
let flack = {boundFoo with grib = fun () -> if boundFoo.flar = "hello" then 5 else 4}
据我所知,它不喜欢fun()->
,但fun->
和fun x->
似乎没有什么不同
到目前为止,我在这方面的研究都是在我平常的地方进行的,并没有给我带来任何明确的方向
我在这里遗漏了什么?在你的代码中,
grib
是一个int。fun()->……
不是一个int,它是一个函数。因此,fun()->…
不是字段grib
的有效值
如果grib
的类型为()->int
,那么您的代码就可以工作了(除了您必须将前一行中的grib=1
更改为grib=fun()->1,当然了),但这在这里似乎不是一件有用的事情。实际上,函数在这里似乎并不合适。这很好:
let flack = {boundFoo with grib = if boundFoo.flar = "hello" then 5 else 4}