我有一个int数组,它需要在函数中发送该对象,并将该数组中的每个元素乘以10并返回一个新数组。就像在koltin中,函数参数为val一样,因此我们无法更改当前数组的值。
答案 0 :(得分:1)
尽管函数参数在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 }
}
答案 1 :(得分:0)
改为使用MutableList或简单使用var
。