Usted tiene:Scala inicialización del campo
val array = new Array[Array[Cell]](height, width)
¿Cómo inicializar todos los elementos a la nueva célula ("algo")?
Gracias, Etam (nuevo en Scala).
Usted tiene:Scala inicialización del campo
val array = new Array[Array[Cell]](height, width)
¿Cómo inicializar todos los elementos a la nueva célula ("algo")?
Gracias, Etam (nuevo en Scala).
val array = Array.fill(height)(Array.fill(width)(new Cell("something")))
val array = Array.fromFunction((_,_) => new Cell("something"))(height, width)
Array.fromFunction acepta una función que toma n argumentos enteros y devuelve el elemento de la posición en la matriz descrita por estos argumentos (es decir, f (x, y) debe devolver el elemento de array (x) (y)) y luego n enteros que describen las dimensiones de la matriz en una lista de argumentos separada.
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>
Suponiendo que la matriz ya se ha creado, puede utilizar esto:
for {
i <- array.indices
j <- array(i).indices
} array(i)(j) = new Cell("something")
Si se puede inicializar en la creación, ver las otras respuestas.
Esto es mejor que fromFunction, pero requiere scala 2.8. Tenga en cuenta que solo puede usar la versión bidimensional del relleno: 'Array.fill (alto, ancho) (new Cell (" algo "))'. – sepp2k