我是 F# 新手。有人能解释一下下面的 lambda 表达式在说什么吗?具体来说,Some c.Id
后面的逗号是做什么的,所有括号的含义是什么?
(fun ((b, p), c) -> (b && p.SelectedInnerRow = Some c.Id, c))
我对 C# 感到有点困惑。
谢谢。
最佳答案
括号用于解构元组。 lambda 表达式采用一个元组(一个元组和一些值)和一些其他值;它返回另一个元组。
现在对于涉及的类型 - 由于名为 b
的参数是 bool 运算符 &&
的操作数,因此它必须是 bool
类型。参数 p
必须有一个名为 SelectedInnerRow
的属性,该属性又应该生成一个选项。此选项与参数 c
的属性 Id
的另一个选项值进行相等比较,因此整个表达式将返回 bool 的元组和未更改的参数 c
.)
(* Dummy types to make it work *)
type Foo = { SelectedInnerRow : int option }
type Bar = { Id : int }
(fun ((b, p), c) -> (b && p.SelectedInnerRow = Some c.Id, c))
(* val it : _arg1:(bool * Foo) * c:Bar -> bool * Bar *)
关于lambda - lambda 表达式中逗号的 F# 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64322768/