如果我訪問索引的Array
的邊界之外,我得到一個ArrayIndexOutOfBoundsException
,如:訪問Array的元素並返回monad?
val a = new Array[String](3)
a(4)
java.lang.ArrayIndexOutOfBoundsException: 4
是否有返回一個單子,而不是一個方法(如:選項)?爲什麼Array的默認集合不支持這個方法?
如果我訪問索引的Array
的邊界之外,我得到一個ArrayIndexOutOfBoundsException
,如:訪問Array的元素並返回monad?
val a = new Array[String](3)
a(4)
java.lang.ArrayIndexOutOfBoundsException: 4
是否有返回一個單子,而不是一個方法(如:選項)?爲什麼Array的默認集合不支持這個方法?
您可以使用lift
:
a.lift(4) // None
a.lift(2) // Some(null)
Array[T]
是PartialFunction[Int, T]
和lift
創建一個從指數Function[Int, Option[T]]
的元素類型的選擇。
你可以使用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數組的工作方式,因此這是Array如何工作的。
你的回答太快太快了 – Odomontois