Quiero clonar una matriz multidimensional @aen 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 . AScalarnunca 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 nuevoArrayen elScalarcontenedor@a[0]. Simplemente cambia el valor retenido en el 2doScalaren el existenteArrayretenido en elScalarlímite existente a@a[0].@ay@bno están obligados . Simplemente contienen las mismas cosas. Elcloneno se repite y solo clona la matriz externa.Una forma de lograr lo que quieres sería
fuente