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