Saltar al contenido

¿Cuál es la diferencia entre push y unshift en Perl?

Solución:

Realmente deberías estar usando use strict; y use warnings; en su código. Tenerlos activados le permitirá identificar errores en su código.

Cambie todas las instancias de lo siguiente:

foreach $name (@names) -> for my $i (@names) ya que no haces nada con los elementos en el @names formación.

@numbers[i] -> $numbers[$i] ya que aquí es donde ha cometido un error no infrecuente al usar un segmento de matriz en lugar de referirse a un elemento de matriz.

Esto no es C. Cada ‘variable’ tiene que tener un sigilo ($, @, %, &, etc.) delante de él. Ese i realmente debería ser $i.


En cuanto a la diferencia entre push y shift, la documentación explica:

perldoc -f push:

presione ARRAY, LIST

Trata a ARRAY como una pila y empuja los valores de LIST al fin de ARRAY. La longitud de ARRAY aumenta con la longitud de LIST. … Devuelve el número de elementos en la matriz después del “empuje” completado.

perldoc -f unshift:

unshift ARRAY, LIST

Hace lo contrario de un turno. O lo contrario de un empujón, dependiendo de cómo se mire. Antepone la lista a la parte delantera de la matriz y devuelve el nuevo número de elementos de la matriz.


Para decirlo ASCII-matemáticamente …

        +---------+           +-----------+        +---------+ 
<-----  | ITEM(S) |  ----->   | (@) ARRAY | <----- | ITEM(S) | ----->
 shift  +---------+  unshift  +-----------+  push  +---------+   pop
                              ^           ^
                              FRONT       END

unshift se utiliza para agregar un valor o valores a la comienzo de una matriz:

¿Hace lo contrario de un shift. O lo contrario de un push, dependiendo de cómo se mire.

Los nuevos valores se convierten en los primeros elementos de la matriz.

push agrega elementos a la fin de una matriz:

Golosinas ARRAY como una pila, y empuja los valores de LIST al final de ARRAY.

Esto realmente debería ser un comentario, pero es demasiado largo para un cuadro de comentarios, así que aquí está.

Si desea ilustrar la diferencia entre unshift y push, lo siguiente sería suficiente:

#!/usr/bin/perl

use strict; use warnings;

my @x;

push @x, $_ for 1 .. 3;

my @y;

unshift @y, $_ for 1 .. 3;

print "@x = @xn@y = @yn";

Producción:

@x = 1 2 3
@y = 3 2 1

Nota use strict; lo protege contra muchos errores del programador y use warnings; le advierte cuando utiliza construcciones de dudoso valor. A tu nivel, ninguno es opcional.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *