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

问题描述 投票:2回答:1

为什么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.
    }
    ....
}
scala comparable
1个回答
2
投票

首先,我们需要知道RichInt用于通过Int中定义的implicit conversionsPredef类型提供辅助函数:

@inline implicit def intWrapper(x: Int) = new runtime.RichInt(x)

所以你可以使用它:

2.doubleValue()
2.shortValue()
...

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

因为我们实际上是在Int类型上运行,而不是RichInt类型。喜欢:

2.compare(3)
© www.soinside.com 2019 - 2024. All rights reserved.