在Kotlin中,参数变量被创建为局部“ val”变量,不能再用于其他值

时间:2019-07-05 05:21:05

标签: kotlin

您好,我是Kotlin的新手,对参数变量感到困惑,因为它们是作为本地“ val”变量创建的,因此无法重用于其他值。 例如:

fun myFunction(mesg:String){
 mesg="hi" //local val variables that can’t be reused for other values
}

但是下面的代码可以正常工作

fun main(args: Array<String>) {
    val abc = arrayOf("A", "B", "C")
    updateArray(abc)

    println(abc[2])// print Z
}

fun updateArray(abcParam: Array<String>) {
    abcParam[2] = "Z" // 
}

1 个答案:

答案 0 :(得分:1)

请记住,在kotlin中,所有值都是通过值传递给函数的。对于基本类型,这是可以的,而且很明显,您不能更改按值传递的变量。但是,如果我们谈论对象,则其引用会传递给函数,因此您不能仅更改传递给函数的引用,而可以随意更改引用所指向的对象。 这就是为什么您可以更改数组元素但不能更改字符串的原因。