有没有更好/更短/更简洁的方式来写这篇文章?
def elementOrNone[T](values: List[T], index: Int): Option[T] = values match { case Nil => None case _ => Some(values(index)) }
js81xvg61#
是
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.IndexOutOf边界异常)。
oogrdqng2#
这里List有一个Lift方法。如果您需要用其他API做一些非常类似的事情,您可以自己编写Lift方法。我看到了一个从JDBC驱动程序中移除getConnection的示例,以便可以安全地使用它。
2条答案
按热度按时间js81xvg61#
是
(但与您的代码不同的是,如果您请求索引大于集合大小的元素--我不知道这对您是好是坏,Lift不会抛出java.lang.IndexOutOf边界异常)。
oogrdqng2#
这里List有一个Lift方法。如果您需要用其他API做一些非常类似的事情,您可以自己编写Lift方法。我看到了一个从JDBC驱动程序中移除getConnection的示例,以便可以安全地使用它。