2010-10-07 18 views
93

Jestem nowy w Scali, właśnie zacząłem się uczyć tego dzisiaj. Chciałbym wiedzieć jak zainicjować tablicę w Scali.Inicjowanie tablic w Scali

Przykładowy kod Java

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

Co jest odpowiednikiem powyższego kodu w Scala?

Odpowiedz

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

Ta odpowiedź nie ma jeszcze wyjaśnić, jak zainicjować tablice wielowymiarowe w Scala (które jest adresowane tutaj: http://stackoverflow.com/questions/13862568/initializing-a-2d-multi-dimensional-array-in-scala) –

14

dodatkowy do odpowiedzi Vasil: jeśli masz wartości podane jako zbiór Scala, można napisać

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

Ale zazwyczaj metoda toArray jest bardziej poręczny:

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

Aby zainicjuj tablicę wypełnioną zerami, możesz użyć:

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

Jest to odpowiednik Javy new byte[5].

+1

Po prostu FYI, Lista jako równoważny inicjator 'List.fill (5) (0) ', akceptuje nawet funkcje. 'List.fill (5) (myFunc())' – cevaris

36

Umożliwia także tworzenie dynamicznych elementów z wypełnieniem, np.

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

==>

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

Jeśli znasz długość tablicy, ale nie znasz jej treści, można użyć

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

Jeśli chcesz mieć dwa wymiary tablicy, ale nie znasz jej zawartości, możesz użyć

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

Oczywiście możesz zmienić String na inny typ.

Jeśli już wiesz, jego zawartość, można użyć

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

inny sposób deklarowania tablic multi-Dimentional:

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

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