首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android经典面试题之Kotlin中常见作用域函数

Android经典面试题之Kotlin中常见作用域函数

作者头像
AntDream
发布2024-07-31 17:53:58
发布2024-07-31 17:53:58
18900
代码可运行
举报
运行总次数:0
代码可运行

Kotlin 中提供了一些内置的作用域函数(Scope Functions),它们通过改变代码块的上下文对象,使代码更加简洁和易读。主要的作用域函数有以下五个:letrunwithapplyalso。这些函数主要区别在于:传递给代码块的对象是作为参数还是接收者,以及它们的返回值是什么。以下是对每个作用域函数的详细说明:

1. let

  • 用法: let 函数常用于可以避免空指针异常(NullPointerException),即在对象为非空时执行特定代码块。
  • 上下文对象:通过参数 it 传递。
  • 返回值:返回代码块的执行结果。
代码语言:javascript
代码运行次数:0
运行
复制
val name: String? = "Kotlin"
val result = name?.let {
    println("Name length: ${it.length}")
    it.length
}
println(result)  // 输出: Name length: 6
                 // 输出: 6

2. run

  • 用法: run 函数通常用于在对象的上下文中执行一段代码,并返回代码块的结果。
  • 上下文对象:通过接收者 this 传递。
  • 返回值:返回代码块的执行结果。
代码语言:javascript
代码运行次数:0
运行
复制
val name = "Kotlin"
val result = name.run {
    println("Name length: $length")  // this指向name,所以可以直接访问length
    length
}
println(result)  // 输出: Name length: 6
                 // 输出: 6

3. with

  • 用法: with 函数不是一个扩展函数,而是一个普通的高阶函数。它在提供的一种对象上执行代码块,经常用于对同一个对象的多个属性进行操作。
  • 上下文对象:通过接收者 this 传递。
  • 返回值:返回代码块的执行结果。
代码语言:javascript
代码运行次数:0
运行
复制
val name = "Kotlin"
val result = with(name) {
    println("Name length: $length")  // this指向name,所以可以直接访问length
    length
}
println(result)  // 输出: Name length: 6
                 // 输出: 6

4. apply

  • 用法: apply 函数通常用于配置对象。它在代码块内可以引用对象的所有公有成员,可以对对象进行初始化、属性设置等操作。
  • 上下文对象:通过接收者 this 传递。
  • 返回值:返回对象本身。
代码语言:javascript
代码运行次数:0
运行
复制
val person = Person().apply {
    name = "Kotlin"
    age = 5
}
println(person)  // 输出: Person(name=Kotlin, age=5)

5. also

  • 用法: also 函数通常用于在链式调用中进行一些额外的操作,比如打印日志或者进行某些检查。
  • 上下文对象:通过参数 it 传递。
  • 返回值:返回对象本身。
代码语言:javascript
代码运行次数:0
运行
复制
val name = "Kotlin"
val result = name.also {
    println("Name is $it")
}
println(result)  // 输出: Name is Kotlin
                 // 输出: Kotlin

总结

  • letalso:通过 it 作为参数传递上下文对象。
  • runwithapply:通过 this 作为接收者传递上下文对象。
  • letrunwith:返回代码块的结果。
  • applyalso:返回上下文对象自身。

根据需求选择合适的作用域函数,可以让你的代码更简洁和直观。

END

点亮【赞和在看】,让钱和爱都流向你。

心里种花,人生才不会荒芜,如果你也想一起成长,请点个关注吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AntDream 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. let
  • 2. run
  • 3. with
  • 4. apply
  • 5. also
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档