es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
Tags:  ,

Answer

  1. Avatar for 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:

    my @f; my @e;
    for $i (0..40) {
        @e=($i+=2, $i+1);
        push(@f,@e);
    }
    
    my $inner_len = 2; # longitud de cada array interno
    my @multi;
    
    for (my $i = 0; $i + $inner_len <= @f; $i += $inner_len) {
        my @inner = @f[$i .. $i+$inner_len-1];
        push(@multi, \@inner);
    }
    
    # ahora @multi contiene un array de referencias a los arrays internos
    # se puede acceder a cada array interno individualmente así:
    
    print "Array interno 1: @{$multi[0]}\n";
    print "Array interno 2: @{$multi[1]}\n";
    # ...y así sucesivamente
    

    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.

Comments are closed.