有没有更好/更短/更简洁的方法来写这个?
def elementOrNone[T](values: List[T], index: Int): Option[T] =
values match {
case Nil => None
case _ => Some(values(index))
}
有没有更好/更短/更简洁的方法来写这个?
def elementOrNone[T](values: List[T], index: Int): Option[T] =
values match {
case Nil => None
case _ => Some(values(index))
}
是的
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
(但与您的代码不同,如果您要求索引大于集合大小的元素,lift 不会抛出 java.lang.IndexOutOfBoundsException ——我不知道这对您是好是坏)。
这里列表有一个提升方法。如果你需要做一些与其他 API 非常相似的事情,你可以自己编写 lift 方法。我已经看到了一个从 JDBC 驱动程序中提升 getConnection 的示例,因此可以安全地使用它。