arrays - 如何将映射函数应用于 Kotlin 中的数组并更改其值?

标签 arrays kotlin

我正在使用此代码。

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/

相关文章:

sockets - 将 bytearray 与 socket.recv_into 一起使用

将二维数组转换为 C 中的灰度图像

Jquery 匹配值到数组

android - 如何更改 kotlin fragment 类中的 ActionBar 标题?

android - 如何使用Kotlin将runOnUiThread中的append应用到Android

android - Kotlin Android - 当主 Activity 添加项目时从 fragment 刷新 ListView

java - 获取字符串数组android中的项目位置?

java - 将 Double 转换为 ArrayList - Android

android - Jetpack Compose DrawImage 编译错误

android - Kotlin AAR 库 w/proguard : How to keep ONLY class and method names?