2010-10-07 18 views
93

Soy nuevo en Scala, recién comencé a aprenderlo hoy. Me gustaría saber cómo inicializar una matriz en Scala.Array inicializando en Scala

código Java Ejemplo

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

¿Cuál es el equivalente del código anterior en Scala?

Respuesta

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

Esta respuesta todavía no explica cómo inicializar matrices multidimensionales en Scala (que se trata aquí: http://stackoverflow.com/questions/13862568/initializing-a-2d-multi-dimensional-array-in-scala) –

14

adicional a la respuesta de Vasil: Si tiene los valores dados como una colección Scala, puede escribir

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

Pero por lo general el método toArray es más útil:

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

Para inicialice una matriz llena de ceros, puede usar:

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

Esto es equivalente a new byte[5] de Java.

+1

Just FYI, Lista como un inicializador equivalente 'List.fill (5) (0) ', acepta incluso funciones. 'List.fill (5) (myFunc())' – cevaris

36

También puede hacer inits más dinámicos con relleno, p.

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

==>

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

Si conoce la longitud de la matriz, pero no se sabe su contenido, puede utilizar

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

Si usted quiere tener dos dimensiones matriz, pero usted no sabe su contenido, puede usar

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

Por supuesto, puede cambiar String a otro tipo.

Si ya conoce su contenido, puede utilizar

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

Otra manera de declarar arrays multi-dimensionales:

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

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