我正在使用此代码。
fun main(args : Array<String>){
val someArray : Array<Int> = arrayOf(3,53,2,521,51,23,512,34,124);
println("Original array is ")
someArray.forEach {print("$it , ")}
someArray.map({num -> num*2})
println("Changed array is ")
println()
someArray.forEach { print("$it , ") }
}
但是 map 功能似乎不起作用。这是它打印的内容
原始数组是
3 , 53 , 2 , 521 , 51 , 23 , 512 , 34 , 124 , 改变的数组是
3, 53, 2, 521, 51, 23, 512, 34, 124,
我的问题是为什么数组没有将其元素的值加倍?我在这里想念什么?
最佳答案
您始终可以定义自己的扩展来满足您的需求:
fun <T> Array<T>.mapInPlace(transform: (T) -> T) {
for (i in this.indices) {
this[i] = transform(this[i])
}
}
用法如下所示:
someArray.mapInPlace { num -> num * 2 }
请注意,原始数组有特殊的非泛型类,例如
IntArray
(另见 this question ),所以你可能应该使用它们而不是通用的。当然,您必须分别为每个扩展定义此扩展,例如:fun IntArray.mapInPlace(transform: (Int) -> Int) { ... }
fun DoubleArray.mapInPlace(transform: (Double) -> Double) { ... }
关于arrays - 如何将映射函数应用于 Kotlin 中的数组并更改其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50465292/