如何从Scala集合中的索引中获取选项?

如何从Scala集合中的索引中获取选项?,scala,scala-option,Scala,Scala Option,当试图通过索引获取元素时,是否有一种方法(仅使用Scala collection API)在列表中获取选项 我在寻找这个函数的等价物,它存在吗 def optionalValue[T](l: List[T], index: Int) = { if (l.size < (index+1)) None else Some(l(index)) } def optionalValue[T](l:List[T],index:Int)={ 如果(l.尺寸选项[a]: scala> L

当试图通过索引获取元素时,是否有一种方法(仅使用Scala collection API)在列表中获取选项

我在寻找这个函数的等价物,它存在吗

def optionalValue[T](l: List[T], index: Int) = {
  if (l.size < (index+1)) None 
  else Some(l(index))
}
def optionalValue[T](l:List[T],index:Int)={
如果(l.尺寸<(索引+1))无
其他一些(l(索引))
}

谢谢

是的,您可以将您的收藏提升到功能
Int=>选项[a]

scala> List(1,2,3).lift
res0: Int => Option[Int] = <function1>

scala> List(1,2,3).lift(9)
res1: Option[Int] = None
scala>List(1,2,3).提升
res0:Int=>Option[Int]=
scala>列表(1,2,3).提升(9)
res1:选项[Int]=无

对于Scala中的许多数据结构,我已经看到了
lift
,命名(和抽象)背后的基本原理是什么?@kosii的回答可能有点晚,但在本例中,“lift”指的是从
Int=>T
类型的部分函数转换为
Int=>Option[T]
类型的总函数。它是一个相当常见的术语,用于将不太一般的东西转换为更一般的东西,或者,换句话说,“添加”一个新结构,例如,将一个单子转换为一个单子变换器,或者将一个函子转换为一个自由单子。我认为这个术语来自范畴理论,但我找不到任何明确的参考。