当我创建一个Scala数组并添加了一个元素,但是数组长度仍为0时,我无法获得添加的元素,尽管我可以在构造函数中看到它。
scala> val arr = Array[String]()
arr: Array[String] = Array()
scala> arr:+"adf"
res9: Array[String] = Array(adf)
scala> println(arr(0))
java.lang.ArrayIndexOutOfBoundsException: 0
... 33 elided
答案 0 :(得分:1)
您声明了0大小的数组。它不能有任何元素。您的数组大小为0. Array[String]()
是数组构造函数语法。
:+
使用给定元素创建一个新数组,这样即使执行:+
操作,旧数组也是空的。
您必须使用ofDim
函数来声明特定大小的数组,然后您可以使用arr(index) = value
语法将元素放入其中。
一旦声明的数组大小不像列表那样动态增加。尝试追加值会创建新的数组实例。
或者您可以使用Array("apple", "ball")
语法在创建过程中初始化数组。
val size = 1
val arr = Array.ofDim[String](size)
arr(0) = "apple"
Scala REPL
scala> val size = 1
size: Int = 1
scala> val arr = Array.ofDim[String](size)
arr: Array[String] = Array(null)
scala> arr(0) = "apple"
scala> arr(0)
res12: String = apple