Scala 访问数组的元素并返回monad?

Scala 访问数组的元素并返回monad?,scala,monads,Scala,Monads,如果我访问数组边界之外的索引,我会得到数组索引OutofBoundsException,例如: val a = new Array[String](3) a(4) java.lang.ArrayIndexOutOfBoundsException: 4 是否有方法返回单子(例如:Option)?为什么默认集合不为数组应用方法来支持这一点 您可以使用: Array[T]是一个PartialFunction[Int,T]和lift创建一个函数[Int,Option[T]从索引到元素类型的一个选项。您

如果我访问
数组
边界之外的索引,我会得到
数组索引OutofBoundsException,例如:

val a = new Array[String](3)
a(4)
java.lang.ArrayIndexOutOfBoundsException: 4
是否有方法返回单子(例如:Option)?为什么默认集合不为数组应用方法来支持这一点

您可以使用:

Array[T]
是一个
PartialFunction[Int,T]
lift
创建一个
函数[Int,Option[T]
从索引到元素类型的一个选项。

您可以使用:


Array[T]
是一个
PartialFunction[Int,T]
lift
创建一个
Function[Int,Option[T]]
从索引到元素类型的一个选项。

您可以使用
scala.util。试试

scala> val a = new Array[String](3)
a: Array[String] = Array(null, null, null)

scala> import scala.util.Try
import scala.util.Try

scala> val fourth = Try(a(3))
third: scala.util.Try[String] = Failure(java.lang.ArrayIndexOutOfBoundsException
: 3)

scala> val third = Try(a(2))
third: scala.util.Try[String] = Success(null)
另一个好主意是首先不使用数组,但这超出了这个问题的范围


但与你的问题相关的是为什么会有这种行为。数组的功能类似于Java数组,并与Java数组兼容。因为这就是Java数组的工作方式,所以这就是数组的工作方式。

您可以使用
scala.util.Try

scala> val a = new Array[String](3)
a: Array[String] = Array(null, null, null)

scala> import scala.util.Try
import scala.util.Try

scala> val fourth = Try(a(3))
third: scala.util.Try[String] = Failure(java.lang.ArrayIndexOutOfBoundsException
: 3)

scala> val third = Try(a(2))
third: scala.util.Try[String] = Success(null)
另一个好主意是首先不使用数组,但这超出了这个问题的范围


但与你的问题相关的是为什么会有这种行为。数组的功能类似于Java数组,并与Java数组兼容。因为Java数组就是这样工作的,所以数组就是这样工作的。

你的答案太快了你的答案太快了