我正在阅读 kotlin 文档:https://kotlinlang.org/docs/reference/generics.html
在页面中间有一个"in"的例子:
interface Comparable<in T> {
operator fun compareTo(other: T): Int
}
fun demo(x: Comparable<Number>) {
x.compareTo(1.0) // 1.0 has type Double, which is a subtype of Number
// Thus, we can assign x to a variable of type Comparable<Double>
val y: Comparable<Double> = x // OK!
}
"x.compareTo(1.0("这一行有什么作用?为什么没有返回值?还是省略了什么?
compareTo
调用的Int
返回值只是未使用——在现实生活中的代码库中,这很可能是一个无用的调用(除非调用者依赖于compareTo
实现的副作用,不鼓励有任何
(。在 docs 示例中,调用仅用于表明,具有Comparable<Number>
,您仍然可以在Double
上调用其compareTo
(这绝对是Number
的子类型(。
通常,在与零的比较中使用返回值compareTo
,以检查操作数是否与结果和零处于相同的排序关系中:
// checks whether x is greater than 1.0
if (x.compareTo(1.0) > 0) {
/* ... */
}
此外,Kotlin 中的运算符约定允许在Comparable<T>
上使用比较运算符,例如x > 1.0
,将它们转换为等效的compareTo
调用,结果与零相比。