Quiero clonar una matriz multidimensional @a
en una matriz @b
.
He procedido de la manera más intuitiva y se me ocurrió lo siguiente:
my @a = [0, 0, 0], [0, 0, 0], [0, 0, 0];
my @b = @a.clone;
@a[0][1] = 1;
@b[1][0] = 1;
say '@a : ' ~ @a.gist;
say '@b : ' ~ @b.gist;
y la impresión es:
@a : [[0 1 0] [1 0 0] [0 0 0]]
@b : [[0 1 0] [1 0 0] [0 0 0]]
¿Eso significa que las dos matrices @a y @b están unidas?
Preguntas:
- ¿Por qué la matriz @a está unida a la matriz @b? (¿Cuál es el propósito del método de clonación en esta situación? Sabemos que la clonación se comporta como la intención de las matrices unidimensionales)
- ¿Cómo puedo realmente clonar @a a @b (multidimensional)?
- ¿Cuál es la forma más eficiente (tiempo limitado) de hacer eso?
Scalar
('S' mayúscula) para referirse al contenedor escalar integrado estándar de Raku . AScalar
nunca es una matriz; pero puede contener (una referencia a) unArray
. Una asignación@a[0][1] = ...
no cambia el escalar oScalar
@a[0]
, y tampoco coloca un nuevoArray
en elScalar
contenedor@a[0]
. Simplemente cambia el valor retenido en el 2doScalar
en el existenteArray
retenido en elScalar
límite existente a@a[0]
.@a
y@b
no están obligados . Simplemente contienen las mismas cosas. Elclone
no se repite y solo clona la matriz externa.Una forma de lograr lo que quieres sería
fuente