Kotlin之高阶函数

Kotlin 的高阶函数是指可以接受函数作为参数或返回函数的函数。高阶函数在 Kotlin 中广泛应用,可以使代码更简洁、更灵活。

1.Let

  • 作用:在对象上执行一个代码块,并返回代码块的结果。常用于处理可空类型和链式调用。
  • 场景:处理可空类型,避免显式的空检查。
val name: String? = "Kotlin"
val length = name?.let {
    println("The name is $it")
    it.length
}

2.run

  • 作用:在对象上执行一个代码块,并返回代码块的结果。与 let 类似,但 run 直接返回代码块的结果,而不是对象本身。
  • 场景:初始化对象或执行多行操作并返回结果。
val length = "Kotlin".run {
    println("The name is $this")
    length
}

3.with

  • 作用:在对象上执行一个代码块,不返回对象本身,而是代码块的结果。通常用于对同一对象执行多次操作。
  • 场景:对同一个对象执行多个操作,减少重复的对象引用
val length = with("Kotlin") {
    println("The name is $this")
    length
}

4.apply

  • 作用:在对象上执行一个代码块,并返回对象本身。常用于对象配置或初始化。
  • 场景:对象配置或初始化,尤其是需要链式调用时。
val person = Person().apply {
    name = "John"
    age = 30
}

5.alse

  • 作用:在对象上执行一个代码块,并返回对象本身。与 apply 类似,但 also 提供了对象作为参数。
  • 场景:在链式调用中执行额外的操作,如日志记录或调试
val person = Person().also {
    it.name = "John"
    it.age = 30
    println("Person created: $it")
}

6.map

  • 作用:对集合中的每个元素执行一个代码块,并返回一个包含结果的新集合。
  • 场景:对集合中的元素进行转换或映射。
val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { it * 2 }

7.filter

  • 作用:对集合中的每个元素执行一个代码块,返回一个包含满足条件元素的新集合。
  • 场景:从集合中过滤出满足条件的元素。
val numbers = listOf(1, 2, 3, 4)
val evenNumbers = numbers.filter { it % 2 == 0 }

8.reduce

  • 作用:对集合中的元素进行累积操作,返回累积结果。
  • 场景:对集合中的元素进行聚合操作,如求和、求积等。
val numbers = listOf(1, 2, 3, 4)
val sum = numbers.reduce { acc, i -> acc + i }

9.fold

  • 作用:与 reduce 类似,但可以指定初始值。
  • 场景:对集合中的元素进行累积操作,并指定初始累积值。
val numbers = listOf(1, 2, 3, 4)
val sum = numbers.fold(0) { acc, i -> acc + i }

10.forEach

  • 作用:对集合中的每个元素执行一个代码块,不返回结果。
  • 场景:对集合中的每个元素执行操作,如打印、修改等。
val numbers = listOf(1, 2, 3, 4)
numbers.forEach { println(it) }

区别、使用场景总结

  • let 和 run:用于在对象上执行代码块,并返回结果。let 返回代码块的结果,run 返回代码块本身。
  • with:用于对同一个对象执行多个操作,减少重复引用。
  • apply 和 also:用于对象配置或初始化,apply 返回对象本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值