2010-10-07 124 views
93

我是新來的Scala,剛開始學習它今天。我想知道如何在Scala中初始化一個數組。在Scala中初始化數組

實施例的Java代碼

String[] arr = { "Hello", "World" }; 

什麼是Scala上述代碼的等效?

回答

116
scala> val arr = Array("Hello","World") 
arr: Array[java.lang.String] = Array(Hello, World) 
+5

這個答案還沒有解釋如何初始化斯卡拉多維數組(這是在這裏解決:http://stackoverflow.com/questions/13862568/initializing-a-2d-multi-dimensional-array-in-scala) – 2013-06-14 22:50:35

14

附加到瓦西爾的回答是:如果你給一個斯卡拉集合的值,你可以寫

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

但通常指定者方法更得心應手:

val list = List(1,2,3,4,5) 
val arr = list.toArray 
println(arr.mkString) 
85

要初始化一個填充零的數組,可以使用:

> Array.fill[Byte](5)(0) 
Array(0, 0, 0, 0, 0) 

這相當於Java的new byte[5]

+1

只是FYI,列出一個等價的初始化'List.fill(5) (0)',甚至接受函數。 'List.fill(5)(myFunc的())' – cevaris 2015-07-10 17:06:03

36

也可以用填充物做更多的動態插入,例如

Array.fill(10){scala.util.Random.nextInt(5)} 

==>

Array[Int] = Array(0, 1, 0, 0, 3, 2, 4, 1, 4, 3) 
10

如果你知道數組的長度,但你不知道它的內容,你可以使用

val length = 5 
val temp = Array.ofDim[String](length) 

如果你想有兩個維度數組,但你不知道它的內容,你可以用

val row = 5 
val column = 3 
val temp = Array.ofDim[String](row, column) 

當然,您可以將字符串更改爲其他類型。

如果你已經知道它的內容,你可以使用

val temp = Array("a", "b") 
8

宣佈多維數組的另一種方式:

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

res3: Array[Array[String]] = Array(Array("", "", ""), Array("", "", ""),Array("", "", ""), Array("", "", ""))