Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 扩展泛型类型-PriorityQueue_Scala_Generics_Priority Queue_Generic Programming - Fatal编程技术网

Scala 扩展泛型类型-PriorityQueue

Scala 扩展泛型类型-PriorityQueue,scala,generics,priority-queue,generic-programming,Scala,Generics,Priority Queue,Generic Programming,我不明白为什么我需要()以及MyTypeQueOrdering的位置。 以下是PriorityQueue的标题,位于: 以下是我的尝试(有效): 。。。但是我不明白为什么我需要()。PriorityQueue[MyType]()是否返回某些内容?尝试将MyTypeQueOrdering设置为隐式对象: object Implicits { //implicit objects can't be top-level ones implicit object MyTypeQueOrderin

我不明白为什么我需要
()
以及
MyTypeQueOrdering
的位置。 以下是
PriorityQueue
的标题,位于:

以下是我的尝试(有效):


。。。但是我不明白为什么我需要
()
PriorityQueue[MyType]()
是否返回某些内容?

尝试将
MyTypeQueOrdering
设置为
隐式对象

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实例化,然后传递排序

也许检查一下这一点您的代码对我来说运行良好。你得到了什么信息?Scala 2.10.2+java 1.8.0(java HotSpot(TM)64位服务器虚拟机(构建25.0-b70,混合模式))现在可以工作了,但我仍然不清楚,什么方法需要
(MyTypeQueOrdering)
?也是构造函数?是的,排序必须在创建时可用,并用于对元素进行优先级排序。我认为它被声明为隐式只是为了方便,这样如果你在范围内有一个排序,你就不必显式地传递它。您可以大致想象PriorityQueue也是这样:
类PriorityQueue[A](ord:Ordering[A])
。这样,您的第一个示例就可以在没有第一个括号的情况下正常工作。在我的示例中,
PriorityQueue[MyType]()
运行了没有参数的构造函数,其中参数应该在那里
MyTypeQueOrdering
应该作为构造函数参数,对吗?
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] { ... }