关于Kotlin中非扩展函数形式的run作用域函数使用示例求助
Kotlin中非扩展形式作用域函数的示例说明
非扩展run的用法示例
Kotlin里的非扩展run是个顶层函数,不需要绑定任何对象,本质就是个能返回值的代码块,适合把多步逻辑打包成一个表达式,或者减少临时变量的使用。
基础用法
val calculationResult = run { val num1 = 15 val num2 = 25 val sum = num1 + num2 sum * 2 // 最后一行就是这个run块的返回值 } println(calculationResult) // 输出 80
实际场景:整合多步初始化逻辑
val config = run { val defaultSettings = mapOf("theme" to "light", "fontSize" to 14) val userCustom = mapOf("fontSize" to 16) defaultSettings + userCustom // 合并配置并返回 } println(config) // 输出 {theme=light, fontSize=16}
关于非扩展also的说明
首先明确:Kotlin标准库没有非扩展版本的also,also只有扩展函数形式,必须依附一个上下文对象,用it指代这个对象,执行操作后返回原对象。给个示例对比参考:
val numbers = mutableListOf(10, 20) val updatedNumbers = numbers.also { it.add(30) it.remove(10) } println(updatedNumbers) // 输出 [20, 30],返回的还是原来的numbers对象
扩展run vs 非扩展run
- 扩展
run:绑定对象,用this(可省略)指代对象,返回代码块结果,用于操作对象并生成新值val greeting = "Hi there" val wordCount = greeting.run { split(" ").size // this指代greeting,可直接调用split } println(wordCount) // 输出 2 - 非扩展
run:无绑定对象,就是独立的代码块返回值,和普通代码块的区别是能作为表达式使用(比如直接赋值给变量)
内容的提问来源于stack exchange,提问作者qian
相关产品推荐
相关产品推荐

