在Scala中初始化数组

Emi*_*mil 113 scala array-initialization

我是Scala的新手,刚刚开始学习它.我想知道如何在Scala中初始化一个数组.

示例Java代码

String[] arr = { "Hello", "World" };
Run Code Online (Sandbox Code Playgroud)

Scala中上述代码的等价物是什么?

Vas*_*iuk 140

scala> val arr = Array("Hello","World")
arr: Array[java.lang.String] = Array(Hello, World)
Run Code Online (Sandbox Code Playgroud)

  • 这个答案还没有解释如何在Scala中初始化多维数组(这里讨论的是:http://stackoverflow.com/questions/13862568/initializing-a-2d-multi-dimensional-array-in-scala) (6认同)

Mar*_*cek 102

要初始化一个用零填充的数组,您可以使用:

> Array.fill[Byte](5)(0)
Array(0, 0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

这相当于Java的new byte[5].

  • 只是FYI,List作为等效的初始化器`List.fill(5)(0)`,接受偶数函数.`List.fill(5)(myFunc的())` (3认同)

Din*_*llu 38

也可以用填充来做更多动态的内部,例如

Array.fill(10){scala.util.Random.nextInt(5)} 
Run Code Online (Sandbox Code Playgroud)

==>

Array[Int] = Array(0, 1, 0, 0, 3, 2, 4, 1, 4, 3)
Run Code Online (Sandbox Code Playgroud)


Lan*_*dei 17

除了Vasil的答案之外:如果你有Scala集合给出的值,你可以写

val list = List(1,2,3,4,5)
val arr = Array[Int](list:_*)
println(arr.mkString)
Run Code Online (Sandbox Code Playgroud)

但通常toArray方法更方便:

val list = List(1,2,3,4,5)
val arr = list.toArray
println(arr.mkString)
Run Code Online (Sandbox Code Playgroud)


Hai*_*mei 14

如果你知道Array的长度,但你不知道它的内容,你可以使用

val length = 5
val temp = Array.ofDim[String](length)
Run Code Online (Sandbox Code Playgroud)

如果您想拥有两个维度数组,但您不知道其内容,则可以使用

val row = 5
val column = 3
val temp = Array.ofDim[String](row, column)
Run Code Online (Sandbox Code Playgroud)

当然,您可以将String更改为其他类型.

如果您已经了解其内容,则可以使用

val temp = Array("a", "b")
Run Code Online (Sandbox Code Playgroud)


aks*_*kar 9

声明多维数组的另一种方法:

Array.fill(4,3)("")

res3: Array[Array[String]] = Array(Array("", "", ""), Array("", "", ""),Array("", "", ""), Array("", "", ""))
Run Code Online (Sandbox Code Playgroud)