Scala数组可以添加新元素吗
当我创建了一个Scala数组并添加了一个元素,但是数组长度仍然是0,并且我无法获得添加的元素,尽管我可以在构造函数中看到它Scala数组可以添加新元素吗,scala,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:
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。它不能有任何元素。您的数组大小为0
Array[String]()
是一种数组构造函数语法
:+
使用给定元素创建一个新数组,以便即使在执行:+
操作后,旧数组仍然为空
您必须使用ofDim
函数首先声明特定大小的数组,然后可以使用arr(index)=value
语法将元素放入数组中
val size = 1
val arr = Array.ofDim[String](size)
arr(0) = "apple"
一旦声明,数组大小不会像列表一样动态增加。尝试附加值将创建新的数组实例
或者,您可以在创建过程中使用数组(“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
您正在使用
:+
创建一个新数组,该数组存储在示例中的res9
中,因为您没有将其分配到任何其他位置。您可以在该数组中找到新元素。原始数组不会以任何方式更改。@tkachuko数组大小不会增加dynamically@tkachuko尝试追加将创建新的数组实例,并且数组是可变的