我无法理解为什么我需要()
,因此我需要MyTypeQueOrdering
。
以下是PriorityQueue
的标题,位于official github:
class PriorityQueue[A](implicit val ord: Ordering[A])
这是我的尝试(有效):
class MyType{
}
object MyTypeQueOrdering extends Ordering[MyType]{
def compare (n1:MyType, n2:MyType) = -1
}
class MyTypeQue extends PriorityQueue[MyType]()(MyTypeQueOrdering){
}
...但我无法弄明白为什么我需要()
。 PriorityQueue[MyType]()
会返回一些内容吗?
答案 0 :(得分:2)
尝试MyTypeQueOrdering
implicit object
:
object Implicits {
//implicit objects can't be top-level ones
implicit object MyTypeQueOrdering extends Ordering[MyType] {
def compare(n1: MyType, n2: MyType) = -1
}
}
这样你可以省略两个括号:
import Implicits._
class MyTypeQue extends PriorityQueue[MyType] { ... }
您的示例中需要空括号的原因是因为PriorityQueue[MyType](MyTypeQueOrdering)
会假设您尝试将排序作为构造函数参数传递。这就是为什么你需要明确地显示no-arg实例化然后传递排序