缺少Scala ArrayBuffer中扩展函数的参数类型
发布时间:2020-12-16 18:57:39 所属栏目:安全 来源:网络整理
导读:尝试从 Scala for the impatient运行以下代码段时: val b = ArrayBuffer(1,7,2,9)val bSorted = b.sorted(_ _) 我收到以下错误: error: missing parameter type for expanded function ((x$1,x$2) = x$1.$less(x$2)) val bSorted = b.sorted(_ _) 有人可以
尝试从
Scala for the impatient运行以下代码段时:
val b = ArrayBuffer(1,7,2,9) val bSorted = b.sorted(_ < _) 我收到以下错误: error: missing parameter type for expanded function ((x$1,x$2) => x$1.$less(x$2)) val bSorted = b.sorted(_ < _) 有人可以解释这里可能发生什么.不应该从ArrayBuffer的内容推断参数类型,还是需要明确指定? 谢谢 解决方法
.sorted采用Ordering类型的隐式参数(类似于Java Comparator).对于整数,编译器将为您提供正确的实例:
scala> b.sorted res0: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1,9) 如果要传递比较功能,请使用sortWith: scala> b.sortWith( _ < _ ) res2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1,9) scala> b.sortWith( _ > _ ) res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(9,1) 但是,请注意,尽管ArrayBuffer是可变的,但是两种排序方法都将返回一个被排序的副本,但是原始的不会被触摸. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |