You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:13:17