Lambda 表达式有点像代码块,是带有可选参数和返回值的代码块。
它们用于创建匿名函数。
与代码块不同的是,Lambda 表达式不继承于普通类。它们也不能存储在 USUAL 类型中。
期望使用 lambda 表达式的代码通常会声明一个委托,以描述 lambda 表达式的参数类型和返回值。
lambda 表达式还可用于声明事件处理程序。
lambda 表达式的返回值是表达式列表中的最后一个表达式,或者是语句列表中返回语句返回的值。
{ [pars] => expression [, expressionlist] }
或
{ [pars] =>
statements // 这些内容不能用分号分隔!
}
pars | 以逗号分隔的参数列表。可选择输入参数。 |
一些示例:
// 单一表达式,无类型参数
{ a, b => a * b}
// 单一表达式,具有类型参数
{ a as int, b as int => a / b}
// 类型参数,表达式列表,最后一个表达式为返回值
{ a as int, b as int => a := iif(a == 0, 1, a), b / a}
// 语句列表,无需分号,返回语句即为返回值
{ a as int, b as int =>
if a == 0
a := 1
endif
return b / a
}
// 注册 Click 事件处理程序 无需键入参数
// 签名源自 Click 事件的签名
btnOk:Click += { sender, args => SELF:Close() }