一、lambda表达式的定义
1.lambda表达式的语法定义如下:
{a1:T1,...,an:Tn => 表达式体}
其中,a1...an是参数变量,T1...Tn是泛型,各个参数之间用逗号相隔。
注意:lambda表达式中=>不可以省略,=>之前可以不用有参数,并且lambda表达式中的参数名的作用域与函数相同。
main(): Int64 {
let f1 = {a:Int64,b:Int64 => a+b}
return 0
}
2.lambda表达式作为参数使用
func function(a1:(Int64) -> Int64):Int64
{
a1(10)
}
main(): Int64 {
return 0
}
返回值类型根据使用处所在的函数调用的形参类型推断。
3.lambda表达式作为返回值使用
func function1():(Int64)->Int64
{
{a:Int64 => a}
}
main(): Int64 {
return 0
}
当lambda表达式作为返回值时,函数主体内要返回一个lambda表达式。
二、lambda表达式的调用
main(): Int64 {
let f1 = {a:Int64,b:Int64 => a+b}
var sum = f1(2,3)
println("相加的和为:${sum}")
return 0
}
当lambda表达式赋值给变量时,调用需要在变量名后用括号把对应数量及类型的参数填上即可。
结果为:
总结:lambda表达式通过其简洁的表达,在仓颉面向函数式编程中被广泛使用,使得代码变得更加的简洁与直观。但是lambda表达式内只能写一条表达式,不能写多条表达式。