如何在列表排序后选择第二个最小元素?
使用此代码我收到错误,我不明白为什么。
object find_the_median {
val L = List(2,4,1,2,5,6,7,2)
L(2)
L.sorted(2) // FIXME returns an error
}
答案 0 :(得分:6)
这是因为sorted
隐式收到了Ordering
个参数,而当你像L.sorted(2)
那样做时,类型检查员认为你想要2
作为Ordering
{1}}。因此,一行中的一种方法是:
L.sorted.apply(2)
或避免apply
明确传递顺序:
L.sorted(implicitly[Ordering[Int]])(2)
我承认有点困惑,所以我认为最好的是两行:
val sorted = L.sorted
sorted(2)
(您可能还希望遵守使用小写命名变量的Scala约定。)