gpt4 book ai didi

kotlin - 如何从Kotlin中相同大小的MutableList >创建MutableList >

转载 作者:行者123 更新时间:2023-12-02 13:32:34 26 4
gpt4 key购买 nike

我想知道如何创建与给定newmatrix = MutableList<MutableList<Int>>大小相同的matrix = MutableList<MutableList<Boolean>>。特别是,我希望newmatrix为零,这可以通过执行循环来实现。
首先想到的是这样做:

var newmatrix = matrix
// tworzymy macierz równą zero
for (k in 0..matrix.indices.last) {
for (l in 0..matrix[0].indices.last) {
newmatrix[k][l] = 0
}
}

但是它当然不起作用,因为它说 newmatrix具有类型 Boolean,而不是 Int ...

最佳答案

您可以编写扩展功能,将MutableList<Boolean>转换为MutableList<Int>,然后在列表列表中使用forEach来转换每个项目:

// extension function for an Int-representation of a Boolean-list
fun MutableList<Boolean>.toIntList(): MutableList<Int> {
var result: MutableList<Int> = mutableListOf()
this.forEach { it -> if (it) { result.add(1) } else { result.add(0) } }
return result
}

fun main(args: Array<String>) {
// example Boolean-matrix
var matrix: MutableList<MutableList<Boolean>> = mutableListOf(
mutableListOf(true, true, true),
mutableListOf(false, false, false),
mutableListOf(false, true, false),
mutableListOf(true, false, true)
)
// provide the structure for the result
val newMatrix: MutableList<MutableList<Int>> = mutableListOf()
// for each Boolean-list in the source list add the result of toIntList() to the result
matrix.forEach { it -> newMatrix.add(it.toIntList()) }
// print the source list
println(matrix)
// print the resulting Int list
println(newMatrix)
}

输出:

[[true, true, true], [false, false, false], [false, true, false], [true, false, true]]
[[1, 1, 1], [0, 0, 0], [0, 1, 0], [1, 0, 1]]

可能有不同甚至更好的转换方法,但这似乎足够了。

关于kotlin - 如何从Kotlin中相同大小的MutableList <MutableList <Boolean >>创建MutableList <MutableList <Int >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60563687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com