Scala数组可以添加新元素

时间:2016-11-03 18:41:33

标签: scala

当我创建一个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

1 个答案:

答案 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