120 votes

Initialisation de tableaux en Scala

J'aimerais savoir comment initialiser un tableau en Scala.

Exemple de code Java

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

Quel est l'équivalent du code ci-dessus en Scala ?

152voto

Vasil Remeniuk Points 12487
scala> val arr = Array("Hello","World")
arr: Array[java.lang.String] = Array(Hello, World)

6 votes

Cette réponse n'explique pas encore comment initialiser des tableaux multidimensionnels en Scala (ce qui est abordé ici) : stackoverflow.com/questions/13862568/ )

112voto

Martin Konicek Points 7999

Pour initialiser un tableau rempli de zéros, vous pouvez utiliser :

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

C'est l'équivalent de la méthode Java new byte[5] .

3 votes

Juste pour info, List comme initialisateur équivalent List.fill(5)(0) accepte les fonctions paires. List.fill(5)(myFunc())

41voto

Dino Fancellu Points 1055

On peut aussi faire des entrées plus dynamiques avec le remplissage, par exemple.

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

\==>

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

18voto

Landei Points 30509

Complément à la réponse de Vasil : Si vous avez les valeurs données sous forme de collection Scala, vous pouvez écrire

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

Mais la méthode toArray est généralement plus pratique :

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

16voto

Haimei Points 328

Si vous connaissez la longueur de Array mais pas son contenu, vous pouvez utiliser

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

Si vous voulez avoir un tableau à deux dimensions mais que vous ne connaissez pas son contenu, vous pouvez utiliser

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

Bien sûr, vous pouvez changer String en un autre type.

Si vous connaissez déjà son contenu, vous pouvez utiliser

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X