lambda - lambda 表达式中逗号的 F# 语法

标签 lambda syntax f#

我是 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/

相关文章:

java - 如何将具有动态值的 lambda 过滤器转换为方法引用

python - Django - 'for' 语句应该至少有四个字 : for choice question_set. all

ruby - 在 Ruby 中创建类方法的不同方式

javascript - JQuery: .hide() 不是一个有效的函数

C# 成员方法作为静态方法 ("reversed extension method")

c# - 有没有办法在 string.contains() 方法中评估多个字符串?

c# - 在 C# 中访问 F# 可区分联合类型的数据的最简单方法是什么?

F# 相当于 C# 中的 SortedDictionary

f# - FSharp : Using CSV Type Provider Async

java - 通用返回类型和 lambda 函数参数