Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 无法重新分配局部变量_Kotlin - Fatal编程技术网

Kotlin 无法重新分配局部变量

Kotlin 无法重新分配局部变量,kotlin,Kotlin,编译器抛出一个错误,说明“无法重新分配val” 局部变量在Kotlin中是只读的吗?函数参数始终是只读的(即声明为val) 如果要更改它,则需要使用(新)局部变量: fun test(temp: Int) { temp = 5 } temp不是局部变量-它是一个函数参数。没有必要重新分配它 只是一个后续问题。为什么函数参数是只读的?它的作用是什么?Kotlin支持不变性而不是易变性,这反映在默认情况下参数是只读的。如果要重新分配它,可以使用同名变量对其进行阴影处理:var temp=t

编译器抛出一个错误,说明“无法重新分配val”


局部变量在Kotlin中是只读的吗?

函数参数始终是只读的(即声明为
val

如果要更改它,则需要使用(新)局部变量:

fun test(temp: Int) {
    temp = 5
}

temp
不是局部变量-它是一个函数参数。没有必要重新分配它

只是一个后续问题。为什么函数参数是只读的?它的作用是什么?Kotlin支持不变性而不是易变性,这反映在默认情况下参数是只读的。如果要重新分配它,可以使用同名变量对其进行阴影处理:
var temp=temp
在Java中,为参数赋值是一种不好的做法。有人可能会认为它会改变函数外部对象的值。这是禁止的,在国际海事组织这是一个很好的决定。
fun test(temp: Int) {
   var myTemp = temp
   myTemp = 5
}