Show/Hide Toolbars

XSharp

 

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() }