尝试从
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。