Kotlin中的Lambda表达式基本定义和使用

简介: Kotlin中的Lambda表达式基本定义和使用

在Kotlin中,Lambda表达式是一种简洁的方式来定义匿名函数。Lambda表达式可以作为函数的实际参数或者返回值,使得函数成为高阶函数。本篇博客将介绍Lambda表达式的基本概念以及使用方法,并提供相关的示例代码。

Lambda表达式的基本概念

Lambda表达式的基本语法如下:

val lambdaName = { parameters -> lambdaBody }
  • lambdaName 是一个变量,用于存储Lambda表达式。
  • parameters 是Lambda表达式的参数列表。
  • lambdaBody 是Lambda表达式的函数体,包含了执行的代码逻辑。


Lambda表达式的返回值类型和返回值由函数体中最后一条语句决定。在每次调用Lambda表达式时,不管方法体里面的语句执行多少条,返回值的类型和返回值都是由方法体中最后一条语句决定的。

Lambda表达式的示例

以下是一些Lambda表达式的示例代码:

// 无参数有返回值的Lambda表达式
val lambdaFun1 = {
    println("Lambda表达式无参数有返回值") // 函数体
}
lambdaFun1()

// 有参数有返回值的Lambda表达式
val sum = { a: Int, b: Int ->
    a + b
}
println(sum(6, 8))

在上述代码中,第一个示例演示了无参数有返回值的Lambda表达式。我们使用变量lambdaFun1存储Lambda表达式,然后通过调用lambdaFun1()来执行Lambda表达式中的代码逻辑。

第二个示例演示了有参数有返回值的Lambda表达式。我们定义了一个Lambda表达式sum,它接受两个参数ab,并返回它们的和。通过调用sum(6, 8)来计算并输出结果。

高阶函数的使用

高阶函数是指接受一个或多个函数作为参数,或者返回一个函数的函数。Lambda表达式的使用使得高阶函数在Kotlin中更加简洁和易用。

以下是一个使用高阶函数的示例代码:

// 函数作为参数使用
fun IntRange.pickNum(function: (Int) -> Boolean): List<Int> {
    var resultList = mutableListOf<Int>()
    for (i in this) {
        if (function(i)) {
            resultList.add(i)
        }
    }
    return resultList
}

// 调用高阶函数
var list = 1..20
println("能被5整除的数")
println(list.pickNum { x: Int -> x % 5 == 0 })
println("能被10整除的数")
println(list.pickNum { x: Int -> x % 10 == 0 })

在上述代码中,我们定义了一个扩展函数pickNum,它接受一个函数作为参数,并根据函数的逻辑选择符合条件的数字。通过调用pickNum函数并传递Lambda表达式作为参数,我们可以筛选出满足条件的数字,并输出结果。

函数作为返回值

Lambda表达式不仅可以作为函数的参数,还可以作为函数的返回值。以下是一个使用函数作为返回值的示例代码:

enum class USER {
    NORMAL, VIP
}

fun getPrice(userType: USER): (Double) -> Double {
    if (userType == USER.NORMAL) {
        return { it }
    }
    return { price -> price * 0.88 }
}

// 调用函数并使用返回的Lambda表达式
var normalUserPrice = getPrice(USER.NORMAL)(200.0)
println("普通用户价格:$normalUserPrice") // 普通用户价格:200.0

var vipUserPrice = getPrice(USER.VIP)(200.0)
println("VIP会员价格:$vipUserPrice") // VIP会员价格:176.0

在上述代码中,我们定义了一个枚举类型USER,用于表示用户类型。函数getPrice接受一个USER类型的参数,并根据用户类型返回一个Lambda表达式。如果用户类型是USER.NORMAL,则返回一个恒定函数{ it },该函数返回传入的参数。如果用户类型是USER.VIP,则返回一个计算折扣后价格的函数{ price -> price * 0.88 }

通过调用getPrice函数并传入不同的用户类型参数,我们可以获取相应用户类型的价格计算函数。然后,我们可以通过传入价格参数来调用返回的Lambda表达式,计算并输出相应的价格。

相关文章
|
2月前
|
Java 开发者 Kotlin
|
4月前
|
存储 Kotlin
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
|
4月前
|
存储 开发者 Kotlin
Kotlin Lambda表达式与标准库中的高阶函数
Kotlin Lambda表达式与标准库中的高阶函数
|
3月前
|
Android开发 Kotlin
Android经典面试题之Kotlin中Lambda表达式有哪些用法
Kotlin的Lambda表达式是匿名函数的简洁形式,常用于集合操作和高阶函数。基本语法是`{参数 -&gt; 表达式}`。例如,`{a, b -&gt; a + b}`是一个加法lambda。它们可在`map`、`filter`等函数中使用,也可作为参数传递。单参数时可使用`it`关键字,如`list.map { it * 2 }`。类型推断简化了类型声明。
20 0
|
3月前
|
Android开发 Kotlin
Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
**Kotlin中的匿名函数与Lambda表达式概述:** 匿名函数(`fun`关键字,明确返回类型,支持非局部返回)适合复杂逻辑,而Lambda(简洁语法,类型推断)常用于内联操作和高阶函数参数。两者在语法、返回类型和使用场景上有所区别,但都提供无名函数的能力。
24 0
|
4月前
|
开发者 Kotlin
Kotlin中List的Lambda表达式应用与解析
Kotlin中List的Lambda表达式应用与解析
|
4月前
|
Kotlin
Kotlin中的When表达式:灵活、强大且直观的条件控制工具
Kotlin中的When表达式:灵活、强大且直观的条件控制工具
|
Java 开发者 Kotlin
Kotlin中lambda表达式详解
lambda运算时java后面版本引进的,所以实现的仅仅是从形式上简化代码,内部的优化并不是非常出色,而Kotlin一开始就支持函数式编程,使得其lambda表达式具有性能上的优势,同时Kotlin简洁的风格也给lambda表达式进一步简化提供了一个良好的实现方式,下面带大家具体看看他们之间的区别以及如何更好的使用Kotlin的极简化lambda表达式
163 0
Kotlin中lambda表达式详解
|
算法 Java 编译器
Kotlin学历之函数与Lambda表达式
Kotlin学历之函数与Lambda表达式
100 0
|
Java Kotlin
【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
292 0
【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
下一篇
无影云桌面