我有兩個 Array<Array> 型別的二維陣列,但是當我將它與 plus 方法結合使用時,我得到如下輸出:
cells.plus(states.last().board.cells) —>
My output (cells here is my array of Array<Array<Char>>)
| |
| X |
| |
|X |
| |
| |
如何正確合并?
例如我有:
val board3x3Array = arrayOf(
arrayOf(' ', ' ', ' '),
arrayOf(' ', 'X', ' '),
arrayOf(' ', ' ', '0')
)
val board3x3Array2 = arrayOf(
arrayOf('0', ' ', ' '),
arrayOf(' ', ' ', ' '),
arrayOf(' ', ' ', ' ')
)
And I need after merge:
val merged = arrayOf(
arrayOf('0', ' ', ' '),
arrayOf(' ', 'X', ' '),
arrayOf(' ', ' ', '0')
)
uj5u.com熱心網友回復:
您可以通過以下代碼歸檔:
val mergedArray = board3x3Array2.mapIndexed { index, array ->
array.mapIndexed { index2, c ->
if (c == ' ') board3x3Array[index][index2] else c
}.toTypedArray()
}.toTypedArray()
在上面,您只是在檢查board3x3Array2單元格中的值是否為空字串' ',然后您將該單元格替換為board3x3Array
uj5u.com熱心網友回復:
假設:兩個二維陣列具有相同的維度,并且如果兩個陣列在某個坐標處都有非' '字符,則第一個陣列獲勝。
我認為最簡單的方法是使用 Array 建構式來創建合并陣列,同時從其中一個源陣列迭代大小,就像這樣。不妨使用 CharArray 來提高性能。
val merged = Array(source1.size) { i ->
CharArray(source1[i].size) { j ->
if (source1[i][j] != ' ') source1[i][j] else source2[i][j]
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523756.html
標籤:科特林
上一篇:當我添加rxjava和rxkotlin時,build.gradle.kts中出現意外的標記(使用';'分隔同一行上的運算式)
