可以说我有class A(val foo: Double)
。
我希望能够将它与其他A
,Double
和Int
.
如果我实现Comparable
,我只能将它与另一种对象类型进行比较。
override fun compareTo(other: A): Int {
return when {
this.foo == other.foo -> 0
this.foo > other.foo -> 1
else -> -1
}
}
但我也看到了覆盖compareTo
操作符的扩展函数。
operator fun A.compareTo(d: Double): Int {
return when {
this.foo == d -> 0
this.foo > d -> 1
else -> -1
}
}
这些和我应该使用什么之间有什么区别?我猜如果我想将它与多种类型进行比较,那么我必须使用扩展函数吗?