Kotlin如何测试(int)数组

3

我希望找到一种简洁的方法来测试intarray。

起初,我尝试了:

mFaces[0].mIndices shouldBe intArrayOf(0, 1, 2)

其中mIndices

var mIndices: IntArray = IntArray(0)

但失败了。Intellij也建议我使用Array覆盖equals()

然后我想尝试这样做:

mFaces[0].mIndices.all { it. == index } shouldBe true

但似乎无法在all{..}内检索it的索引,或者是这样的吗?

var p = 0
mFaces[0].mIndices.all { it == p++ } shouldBe true

唯一的可能性?

你能展示一下 mIndices 的声明吗? - miensol
可能是重复问题:https://dev59.com/XlsW5IYBdhLWcg3wM02F - mfulton26
1个回答

4
在Java(Kotlin)中,数组是通过引用进行比较的,而不是通过内容。这意味着intArrayOf(1, 2, 3) != intArrayOf(1, 2, 3)
要比较数组内容,您有两个选项:
1.使用深度比较: Arrays.deepequals(mFaces[0].mIndices, intArrayOf(0, 1, 2)) 2.使用列表: mFaces[0].mIndices.toList() == listOf(0, 1, 2)

严格来说,等号运算符调用方法equals()(这是Kotlin)在数组的情况下实现为引用比较(这是Java的问题)。 - Michał Kosmulski
mFaces[0].mIndices.toList().contentEquals(listOf(0, 1, 2))这个怎么样? - gotube

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接