如何在Scala中使用反向方法获得列表的最后两个元素不? (仅第一,第二,尾巴,头部)。我想像“ list.tail.head”那样输入sth,但是它不起作用。有什么想法吗?
答案 0 :(得分:3)
只需使用takeRight
List(1, 2, 3).takeRight(2)
res0: List[Int] = List(2, 3)
答案 1 :(得分:2)
我假设您不想使用诸如reverse,takeRight等之类的东西
import scala.annotation.tailrec
@tailrec
def take2[T](l: List[T]): Option[List[T]] = l match {
case Nil | _ :: Nil => None
case _ :: _ :: Nil => Some(l)
case _ :: xs => take2(xs)
}
如果您的算法需要快速访问集合中的最后两个元素,请考虑使用List以外的其他内容。