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

如何修改Kotlin函数的入参值,且不需要使用额外变量?

问题解答

你给出的代码无法通过编译:Kotlin 中函数的所有形参默认都是只读的val类型,禁止在函数体内直接重新赋值。

如果要在不新增额外变量的前提下实现修改参数对应的值的需求,有以下两种常用方案:

方案1:使用可变包装类包裹参数

如果需要保留通过形参修改外部原值的引用语义,可以用自定义可变包装类或者JDK自带的AtomicInteger等可变性容器包裹原始值,不需要新增额外临时变量:

// 自定义简单可变Int包装
class MutableInt(var value: Int)

fun doSomething(a: MutableInt) {
    a.value = 23
}

// 调用示例
fun main() {
    val num = MutableInt(10)
    doSomething(num)
    println(num.value) // 输出23
}

方案2:直接返回修改后的值

如果不需要保留引用传递的语义,更推荐直接让函数返回修改后的值,调用时直接覆盖原值即可,全程不需要额外变量:

fun doSomething(a: Int): Int {
    // 这里可以写基于a的修改逻辑,示例直接赋值为23
    return 23
}

// 调用示例
fun main() {
    var num = 10
    num = doSomething(num)
    println(num) // 输出23
}

注意:不推荐使用反射等手段强制修改只读形参的值,会破坏Kotlin的内存安全约定,极易出现不可预期的运行异常。

内容的提问来源于stack exchange,提问作者Sasha Arutyunyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:03