¿Cómo insertar un array dentro de otro array?
¿Cómo podemos insertar correctamente un array dentro de otro array y luego recuperar cada uno del array externo (explicar ambos por separado claramente de otros)?
Ilustrado:
my @f; my @e;
for $i (0..40) {
@e=($i+=2, $i+1);
push(@f,@e); # ¿está bien así?
}
# cómo controlar el arreglo multidimensional
davy.ai
Para enviar correctamente un array dentro de otro array en Perl, se puede utilizar la función
push
, como se muestra en el código de ejemplo proporcionado. En este ejemplo, cada iteración del bucle crea un nuevo array@e
con dos valores, que luego se envía al array@f
. Por lo tanto, al final del bucle,@f
será un array plano (unidimensional) que contiene todos los valores de los arrays@e
creados en el bucle.Para recuperar cada elemento del array principal (
@f
) como un array interno separado, se puede utilizar un bucle con un tamaño de paso igual a la longitud de los arrays internos. Por ejemplo:En este código, primero definimos la longitud de cada array interno (
$inner_len
), que es 2 en este caso. Luego creamos un array vacío@multi
para contener las referencias de los arrays internos.A continuación, recorremos el array principal
@f
, comenzando en el índice 0 y aumentando según la longitud de los arrays internos cada vez ($i += $inner_len
). En cada iteración, creamos un nuevo array@inner
cortando el array principal usando el índice actual$i
y la longitud de los arrays internos$inner_len
. Usamos el operador de diagonal invertida (\
) para tomar una referencia a este array, que enviamos al array@multi
.Una vez que se completa el bucle,
@multi
contiene una referencia a cada uno de los arrays internos. Para acceder a cada array interno individualmente, podemos utilizar la notación de índice con la sintaxis@{ }
para desreferenciar la referencia. Entonces,@{$multi[0]}
nos da el primer array interno, y así sucesivamente.