下面引用compare的时候为啥加*,compare不是返回值是0和1吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下面引用compare的时候为啥加*,compare不是返回值是0和1吗?相关的知识,希望对你有一定的参考价值。
参考技术A 你这里写成*compare加重了你理解的难度,你改成*pcompare就比较明了了这里pcompare是一个‘函数指针’,这里不是调用函数,而是传一个函数指针给Locate...函数
*是说它是函数指针类型,和返回值是啥没有啥关系追问
这俩compare没关系吗
追答没有任何关系
为啥 Scala 的 RichInt 扩展 Comparable[Int] 而不是 Comparable[RichInt]?
【中文标题】为啥 Scala 的 RichInt 扩展 Comparable[Int] 而不是 Comparable[RichInt]?【英文标题】:Why does Scala's RichInt extends Comparable[Int] instead of Comparable[RichInt]?为什么 Scala 的 RichInt 扩展 Comparable[Int] 而不是 Comparable[RichInt]? 【发布时间】:2018-03-05 01:39:08 【问题描述】:为什么 Scala 的 RichInt
扩展 Comparable[Int]
而不是 Comparable[RichInt]
?
我是 Scala 新手。在浏览 Scala 库代码时,我注意到 RichInt
类扩展了 ScalaNumberProxy[Int]
,
ScalaNumberProxy
扩展 OrderedProxy
、OrderedProxy
扩展 Ordered
和 Ordered
扩展 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】:首先我们需要知道RichInt
用于为Int
类型提供帮助函数,由implicit conversions 在Predef 中定义:
@inline implicit def intWrapper(x: Int) = new runtime.RichInt(x)
所以你可以像这样使用它:
2.doubleValue()
2.shortValue()
...
对于您的问题:为什么不扩展 java.lang.Comparable[RichInt]
因为我们实际上是在 Int
类型上操作,而不是 RichInt
类型。喜欢:
2.compare(3)
【讨论】:
感谢您的解释。这是非常有帮助的。我还有一个问题:如果它扩展 java.lang.Comparable[RichInt] 会发生什么?感谢您的热心帮助。 如果扩展java.lang.Comparable[RichInt],这将绑定Comparable函数(compareTo
)在RichInt类型。但实际上RichInt
是针对 Int 类型而不是 RichInt 类型的丰富功能。
感谢您的解释。所以我的理解是,如果RichInt extends java.lang.Comparable[RichInt],Int 类型就不是Comparable。以上是关于下面引用compare的时候为啥加*,compare不是返回值是0和1吗?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Comparator 应该实现 Serializable?
Sass函数-comparable 判断两个数是否可进行加减合并