scala 列表中的元素换行为选项

mwg9r5ms  于 2022-11-09  发布在  Scala
关注(0)|答案(2)|浏览(159)

有没有更好/更短/更简洁的方式来写这篇文章?

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

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边界异常)。

oogrdqng

oogrdqng2#

这里List有一个Lift方法。如果您需要用其他API做一些非常类似的事情,您可以自己编写Lift方法。我看到了一个从JDBC驱动程序中移除getConnection的示例,以便可以安全地使用它。

相关问题