21-Lambda 表达式
介绍
Lambda表达式可以看成是一种函数的简写,对于函数而言,有函数声明、函数调用。所以我们在学习 Lambda表达式的时候也可以从这
个作为入手来学习,其中,Lambda表达式特别灵活,在学习的时候尤为注意。
基本语法
Lambda 表达式的语法为如下形式: { p1: T1, ..., pn: Tn => expressions | declarations }
- Lambda 表达式 的外层通过
{}
来表示 =>
左侧为参数部分=>
右侧为返回值或者逻辑代码部分
简单声明
// 声明 f1 的形参是a,a的类型是Int64 , 返回值 是 a+100
let f1 = {a: Int64 => a + 100}
简单调用
println(f1(200)) // 将f1 当成函数来调用
省略参数类型
Lambda 表达式 在声明了类型的同时,可以省略形参的类型
// 没有省略
let f1: (a: Int64) -> Int64 = {a: Int64 => a}
// 省略
let f2: (a: Int64) -> Int64 = {a => a}
没有形参
Lambda 表达式 在没有形参时,写法如下
// 有参数
let f3 = {a: Int64 => a + 100}
// 没有参数
let f4 = {=> 100}
没有返回值
Lambda 表达式 在没有返回值时,写法如下
// 没有返回值 也没有形参
let f5 = { => }
立即调用
Lambda 表达式支持立即调用,例如:
let f6 = {a: Int64, b: Int64 => a + b}(1, 2)
println(f6) // 3
let f7 = {=> 123}()
println(f7) // 123
当成变量进行传递和调用
func f() {
var g = { x: Int64 => println("x = ${x}") }
g(2)
}