加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 使用Ordering的参数化方法?

发布时间:2020-12-16 10:07:31 所属栏目:安全 来源:网络整理
导读:现在我很困惑.我是 Scala的新手,已经使用了几个星期,我想我已经熟悉了它,但我仍然坚持看似简单的以下情况. 我找不到与此Java声明等效的Scala: public static T extends ComparableT ListT myMethod(ListT values) { // ... final ListT sorted = new ArrayL
现在我很困惑.我是 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
  //
}

但是,我收到以下错误:

error: illegal cyclic reference involving type A

error: diverging implicit expansion for type scala.math.Ordering[A]
starting with method Tuple9 in object Ordering

我哪里错了?

解决方法

这应该是一个上下文绑定,如下所示.

scala> def myMethod[A : Ordering](values: Seq[A]): Seq[A] = values.sorted
myMethod: [A](values: Seq[A])(implicit evidence$1: Ordering[A])Seq[A]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读