Hai:Scala gamma di inizializzazione
val array = new Array[Array[Cell]](height, width)
Come si inizializza tutti gli elementi al nuovo cellulare ("qualcosa")?
Grazie, Etam (nuovo alla Scala).
Hai:Scala gamma di inizializzazione
val array = new Array[Array[Cell]](height, width)
Come si inizializza tutti gli elementi al nuovo cellulare ("qualcosa")?
Grazie, Etam (nuovo alla Scala).
val array = Array.fill(height)(Array.fill(width)(new Cell("something")))
val array = Array.fromFunction((_,_) => new Cell("something"))(height, width)
Array.fromFunction accetta una funzione che prende n argomenti interi e restituisce l'elemento per la posizione nell'array descritto da tali argomenti (cioè f (x, y) deve riportare l'elemento di matrice (x) (y)) e quindi n interi che descrivono le dimensioni dell'array in una lista di argomenti separata.
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>
Supponendo che l'array è già stato creato, è possibile utilizzare questo:
for {
i <- array.indices
j <- array(i).indices
} array(i)(j) = new Cell("something")
Se è possibile inizializzare al momento della creazione, vedere le altre risposte.
Questo è più bello di fromFunction, ma richiede scala 2.8. Nota che puoi semplicemente usare la versione bidimensionale del riempimento: 'Array.fill (altezza, larghezza) (nuova cella (" qualcosa "))'. – sepp2k