Tag: 等于

我可以添加运算符到现有的类吗?

在Kotlin中,我想要添加一个equals方法到一个尚未得到equals实现的现有类。 在我的情况下,我想比较两个BooleanArray实例。 如果两个数组a1和a2的大小相同,并且所有项都相等,则equals (以及== )应该返回true 。 因此a1[i] === a2[i]对于所有的0 <= i < size 。 该文档指出可以通过扩展方法定义运算符 : 该函数必须声明为 fun equals(other: Any?): Boolean 或者具有相同参数列表和返回类型的扩展函数。 BooleanArray不提供一个equals方法。 所以我写道: fun BooleanArray.equals(other: Any?): Boolean { return … } 但是这个扩展被忽略。 当我比较两个BooleanArray如 BooleanArray(0).equals(BooleanArray(0)) 它不调用扩展方法,因此对于两个不同的实例总是评估为false 。

重载等于Kotlin中的BigDecimal

在Kotlin文件中,我尝试重载BigDecimal类的equals方法。 我有以下一段代码: fun BigDecimal.equals(n: Any?): Boolean = n is Int && this.compareTo(BigDecimal(n)) == 0 问题是这个函数不会被n.equals(1)调用,其中n是BigDecimal类型。 有什么问题,我该如何解决?

kotlin中数据类的等价方法

我有以下的数据类 data class PuzzleBoard(val board: IntArray) { val dimension by lazy { Math.sqrt(board.size.toDouble()).toInt() } } 我读了Kotlin中的数据类,可以免费获得equals()/ hashcode()方法。 我实例化了两个对象。 val board1 = PuzzleBoard(intArrayOf(1,2,3,4,5,6,7,8,0)) val board2 = PuzzleBoard(intArrayOf(1,2,3,4,5,6,7,8,0)) 但是下面的语句仍然返回false。 board1 == board2 board1.equals(board2)

如何比较Kotlin中的两个数组?

给Kotlin中的一些数组 let a = arrayOf("first", "second") val b = arrayOf("first", "second") val c = arrayOf("1st", "2nd") Kotlin std-lib是否有内置的函数来测试每个元素的(值)相等的两个数组? 由此导致: a.equals(b) // true a.equals(c) // false equals()实际上在两种情况下都返回false ,但是可能有内置函数可供Kotlin使用? 有静态函数java.utils.Arrays.deepEquals(a.toTypedArray(), b.toTypedArray())但我宁愿一个实例方法,因为它会更好地与optionals。