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数组就是这样工作的,所以数组就是这样工作的。你的答案太快了你的答案太快了