如果这个问题的解决方案太明显或者之前已经在这个论坛中解决了,请见谅(在这种情况下,请指点我的帖子)。
我有一堂课
org.personal.exercises.LengthContentsPair (l: Int, c: String)
{
val length = l
val contents = c
}
然后,在同一个源文件中,我还定义了一个隐式值,它定义了这种类型的对象的排序方式,因此:
object LengthContentsPair {
implicit val lengthContentsPairOrdering = new Ordering [LengthContentsPair] {
def compare (a: LengthContentsPair, b: LengthContentsPair)= {
a.length compare b.length;
}
}
}
以下是本论坛给出的解决方案。
现在,我想创建一个专门的 Set,它将 Set 中的元素数量限制为给定数量。因此,我定义了一个单独的类,如下所示:
import scala.collection.immutable.TreeSet;
import org.personal.exercises.LengthContentsPair.lengthContentsPairOrdering;
class FixedSizedSortedSet [LengthContentsPair] extends TreeSet [LengthContentsPair]
{ ..
}
对我来说,这似乎是继承 TreeSet 的正确方法。但是,编译器会抛出以下错误:
(1) 没有为 LengthContentsPair 定义隐式排序。
(2)构造函数TreeSet的参数不够:(隐式排序:Ordering[LengthContentsPair])scala.collection.immutable.TreeSet[LengthContentsPair]。未指定的值参数排序。
我是否错误地理解了范围规则?我觉得这很容易,但我不能把手放在它上面。