如何在Kotlin中复制二维数组?

时间:2016-11-07 10:52:31

标签: arrays kotlin

此方法正常。但是,我认为它不起作用。

fun getCopy(array: Array<BooleanArray>): Array<BooleanArray> {
    val copy = Array(array.size) { BooleanArray(array[0].size) { false } }
    for (i in array.indices) {
        for (j in array[i].indices) {
            copy[i][j] = array[i][j]
        }
    }
    return copy
}

是否有更实用的方式?

2 个答案:

答案 0 :(得分:9)

您可以像这样使用clone

fun Array<BooleanArray>.copy() = map { it.clone() }.toTypedArray()

或者如果你想保存一些分配:

fun Array<BooleanArray>.copy() = arrayOfNulls<ByteArray>(size).let { copy ->
    forEachIndexed { i, bytes -> copy[i] = bytes.clone() }
    copy
} as Array<BooleanArray>

@hotkey建议的更简洁:

fun Array<BooleanArray>.copy() = Array(size) { get(it).clone() }

答案 1 :(得分:0)

如何使用val isAnything = this.mNewsCategories?.isNotEmpty() ?: false

copyOf()
  

返回新数组,该数组是原始数组的副本

参考here