【发布时间】:2011-05-31 13:12:41
【问题描述】:
现在我很困惑。我对 Scala 很陌生,已经使用了几个星期,我想我已经熟悉了它,但我被困在下面这个看似微不足道的案例上。
我找不到与此 Java 声明等效的 Scala:
public static <T extends Comparable<T>> List<T> myMethod(List<T> values) {
// ...
final List<T> sorted = new ArrayList<T>(values);
Collections.sort(sorted);
// ...
}
我认为以下方法可以:
def myMethod[A >: Ordering[A]](values: Seq[A]): Seq[A] = {
// ...
val sorted = values.sorted
//
}
但是,我收到以下错误:
错误:涉及类型 A 的非法循环引用
错误:scala.math.Ordering[A] 类型的发散隐式扩展 从对象排序中的方法 Tuple9 开始
我哪里错了?
【问题讨论】:
-
应该是A <:> Ordering[A],A是Ordering[A]的子类型(即扩展)。这样它应该可以编译。
标签: scala variance type-parameter