为什么Scala的RichInt扩展了Comparable [Int]而不是Comparable [RichInt]?

时间:2018-03-05 01:39:09

标签: scala comparable

为什么Scala的RichInt扩展Comparable[Int]而不是Comparable[RichInt]

我是Scala的新手。浏览Scala库代码时,我注意到类RichInt扩展了ScalaNumberProxy[Int]ScalaNumberProxy延伸OrderedProxyOrderedProxy延伸OrderedOrdered延伸java.lang.Comparable。 所以我的理解是RichInt(间接)延伸java.lang.Comparable[Int]

我的问题是为什么不扩展java.lang.Comparable[RichInt]

我提出这个问题的原因是Java,我会写这样的代码:

class A implements Comparable<A> {

    @Override

    public int compareTo(A other) {
        //implement the method.
    }
    ....
}

1 个答案:

答案 0 :(得分:2)

首先,我们需要知道RichIntInt所定义的@inline implicit def intWrapper(x: Int) = new runtime.RichInt(x) 类型2.doubleValue() 2.shortValue() ... 用于提供帮助函数: p>

Int

所以你可以像:

一样使用它
RichInt

对于你的问题:为什么它不扩展java.lang.Comparable [RichInt]

因为我们实际上是在2.compare(3) 类型上运行,而不是{{1}}类型。像:

{{1}}