2010-10-07 4 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

Этот ответ еще не объясняет, как инициализировать многомерные массивы в Scala (который рассматривается здесь: http://stackoverflow.com/questions/13862568/initializing-a-2d-multi-dimensional-array-in-scala) –

14

В дополнение к ответу Василевден: Если у вас есть значения, указанные в коллекции Scala, вы можете написать

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

Но обычно метод ToArray более удобен:

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

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) 

Конечно, вы можете изменить String на другой тип.

Если вы уже знаете, его содержание, вы можете использовать

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

Другой способ объявления нескольких массивов мерных:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^