Skip to content

21-Lambda 表达式

介绍

Lambda表达式可以看成是一种函数的简写,对于函数而言,有函数声明、函数调用。所以我们在学习 Lambda表达式的时候也可以从这

个作为入手来学习,其中,Lambda表达式特别灵活,在学习的时候尤为注意。

基本语法

Lambda 表达式的语法为如下形式: { p1: T1, ..., pn: Tn => expressions | declarations }

  1. Lambda 表达式 的外层通过 {} 来表示
  2. => 左侧为参数部分
  3. => 右侧为返回值或者逻辑代码部分

简单声明

    // 声明  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)
    }

Released under the MIT License.