Инициализация массива Scala

Вы имеете:

val array = new Array[Array[Cell]](height, width)

Как Вы инициализируете все элементы к новой Ячейке ("что-то")?

Спасибо, Etam (в новинку для Scala).

13
задан Etam 10 April 2010 в 18:38
поделиться

4 ответа

val array = Array.fill(height)(Array.fill(width)(new Cell("something")))
16
ответ дан 1 December 2019 в 17:47
поделиться
val array = Array.fromFunction((_,_) => new Cell("something"))(height, width)

Array.fromFunction принимает функцию, которая принимает n целочисленных аргументов и возвращает элемент для позиции в массиве, описываемой этими аргументами (т.е. f (x, y ) должен возвращать элемент для array (x) (y)), а затем n целых чисел, описывающих размеры массива, в отдельном списке аргументов.

7
ответ дан 1 December 2019 в 17:47
поделиться

Предполагая, что массив уже создан, вы можете использовать это:

for {
  i <- array.indices
  j <- array(i).indices
} array(i)(j) = new Cell("something")

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

5
ответ дан 1 December 2019 в 17:47
поделиться
Welcome to Scala version 2.8.0.r21376-b20100408020204 (Java HotSpot(TM) Client VM, Java 1.6.0_18).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val (height, width) = (10,20)
height: Int = 10
width: Int = 20

scala> val array = Array.fill(height, width){ new Cell("x") }
array: Array[Array[Cell[java.lang.String]]] = Array(Array(Cell(x), Cell(x), ...
scala>
19
ответ дан 1 December 2019 в 17:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: