是否有更好/更短/更简洁的方法来写这个?
def elementOrNone[T](values: List[T], index: Int): Option[T] =
values match {
case Nil => None
case _ => Some(values(index))
}
答案 0 :(得分:8)
是
val xs = List(1,2,3)
scala> xs.lift(1)
//res2: Option[Int] = Some(2)
scala> xs.lift(10)
//res3: Option[Int] = None
scala> val ys = List.empty[Int]
// ys: List[Int] = List()
scala> ys.lift(0)
// res1: Option[Int] = None
(但与你的代码不同,如果你要求索引大于集合大小的元素,请不要抛出java.lang.IndexOutOfBoundsException - 我不知道它对你有好处还是坏处。)
答案 1 :(得分:0)
这里列表有一个提升方法。如果您需要做与其他API非常相似的事情,您可以自己编写电梯方法。我已经看到了一个从JDBC驱动程序中提取getConnection的示例,因此可以安全地使用它。