包含在选项中的列表中的元素

时间:2013-06-19 12:35:32

标签: scala collections option

是否有更好/更短/更简洁的方法来写这个?

def elementOrNone[T](values: List[T], index: Int): Option[T] =
   values match { 
    case Nil => None
    case _ => Some(values(index))
}

2 个答案:

答案 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的示例,因此可以安全地使用它。