无法重用功能参数

时间:2017-08-02 15:30:52

标签: kotlin

我试图重复使用函数参数这样的事情

fun test(i: Int) {
    i += 5
}

但正如this distinction

中所述
  

函数参数为val而非var

2 个答案:

答案 0 :(得分:4)

在Kotlin中,函数参数被视为val。这意味着你必须在你的功能中做一些事情,以便修改"修改"它的参考。

您的解决方案可行,但我觉得隐藏变量是一种不好的做法。它会导致混淆,并且不能完全准确地涵盖您理解效果是函数本地的意图。

我会选择这样的东西:

fun test(i: Int) {
    var i2 = i
    i2 += 3 // etc...
}

答案 1 :(得分:0)

我发现的唯一解决方案是使用名称阴影,即类似

fun test(i: Int) {
    var i = i
    i += 5
}

我不确定它是否是最好的解决方案,因为它感觉不对,即使IntelliJ IDEA也警告过我。

我希望像

那样神奇
fun test(var i: Int) {
    i += 5
}

但不幸的是,这甚至没有消费。