Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala数组可以添加新元素吗_Scala - Fatal编程技术网

Scala数组可以添加新元素吗

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数组并添加了一个元素,但是数组长度仍然是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。它不能有任何元素。您的数组大小为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尝试追加将创建新的数组实例,并且数组是可变的