我有一个int数组,它需要在函数中发送一个对象,并将该数组中的每个元素乘以10,然后返回一个新数组。就像在kotlin中,函数参数为val一样,因此我们无法更改当前数组的值。

最佳答案

尽管函数参数在Kotlin中是“val的”,这意味着您无法修改它们指向的对象,但是该对象(在您的情况下为数组)仍然是可变的。

如果您想更改传递给函数的数组,则可以做到这一点,这将更改每个引用该数组的人的值:

fun multiplyByTenInPlace(array: IntArray) {
    for (i in array.indices) {
        array[i] = array[i] * 10
    }
}

如果要创建一个新数组而不是返回新值:
fun multiplyByTen(array: IntArray): IntArray {
    return array.map { it * 10 }.toIntArray()
}

或更妙的是,没有在中间创建列表:
fun multiplyByTen(array: IntArray): IntArray {
    return IntArray(array.size) { i -> array[i] * 10 }
}

10-08 17:44