【2023】Kotlin教程 第二篇 面向对象与函数式编程 第13章 函数式编程基石——高阶函数和Lambda表达式 13.3 Lambda表达式 13.3.4 Lambda表达式与return语句

【2023】Kotlin教程

在这里插入图片描述

第二篇 面向对象与函数式编程

第13章 函数式编程基石——高阶函数和Lambda表达式

函数式编程思想虽然与面向对象一样立即悠久,但是支持函数式编程的计算机语言不过是近几年的事情。这些语言有Swift、Python、Java 8和C++ 11等,作为新生的语言Kotlin也支持函数式编程。

13.3 Lambda表达式

Lambda表达式是一种匿名函数,可以作为表达式、函数参数和函数返回值使用,Lambda表达式的运算结果是一个函数。

13.3.4 Lambda表达式与return语句

Lambda表达式体中也可以使用return语句,它会使程序跳出Lambda表达式体。示例代码如下:

// 累加求和函数
fun sum(vararg num: Int): Int {
    
    
    var total = 0

    num.forEach {
    
    
//        if (it == 10) return -1 // 返回最近的函数
        if (it == 10) return@forEach // 返回Lambda表达式函数
        total += it
    }

    return total
}

fun main() {
    
    

    val n = sum(1, 2, 10, 3)
    println(n) // 6

    val add = label@{
    
    
        val a = 1
        val b = 2
        return@label 10
        a + b
    }

    // 调用Lambda表达式add
    println(add()) // 10
}

这段代码中,forEach 函数后面是一个Lambda 表达式,如果使用 if (it == 10) return -1 ,会返回最近的sum 函数,不是返回Lambda 表达式forEach。

在这里插入图片描述

为了返回Lambda表达式则需要在return语句后面加上标签,@forEach是隐式声明标签,标签名是Lambda表达式所在函数名(forEach)。

在这里插入图片描述

也可以为Lambda表达式声明显式标签,

在这里插入图片描述

【提示】 forEach是集合、数组或区间的函数,它后面是一个Lambda表达式,集合、数组或区间对象调用forEach函数时,会将它们的每一个元素传递给Lambda表达式并执行。

猜你喜欢

转载自blog.csdn.net/weixin_44226181/article/details/130024481
今日推荐