Foros del Web » Programación para mayores de 30 ;) » Programación General »

Shift

Estas en el tema de Shift en el foro de Programación General en Foros del Web. Hola, estoy recien leyendo manuales de perl. y no encuentro una definicion de la palabra shift. Código HTML: use base qw( CGI::Application ); my $self ...
  #1 (permalink)  
Antiguo 07/07/2010, 09:24
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
De acuerdo Shift

Hola, estoy recien leyendo manuales de perl. y no encuentro una definicion de la palabra shift.

Código HTML:
use base qw( CGI::Application );
my $self = shift;
que significa, para que se usa....


Muchisimas gracias.
__________________
Dios es mas grande que tu problema :-)
  #2 (permalink)  
Antiguo 07/07/2010, 09:34
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Shift

Lo puedes ver en tu propio ordenador, en el documento perlfunc, que puedes consultar con la orden perldoc perlfunc, o directamente, con perldoc -f split, o en una página HTML si has instalado el ActivePerl, o en la web de perldoc.perl.org, en su propia página.

Lo que hace es extraer el primer elemento de una lista de valores o de un array.
__________________
JF^D Perl Programming en Español
  #3 (permalink)  
Antiguo 10/07/2010, 10:20
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Shift

En Perl las cosas nunca son lo que parece, como te ha comentado Jferrero,
Código:
shift
extrae el primer valor de un array, despojando al mismo de ese valor.

Código:
@array = (1,2,3,4);
print shift(@array); # devolvera 1
print "@array"; # devolvera los valores restantes 2 3 4
En perl existen dos variables mágicas $_ y @_, esta están presente en distintos contextos que con el tiempo sabrás.

Cuando llamas a una subrutina y le pasas algunas variables, esta son cargadas al array @_, por ejemplo:

Código:
subrutina('uno','dos','tres');
Anterior mente llamamos a subrutina con nombre subrutina y le pasamos tres valores, ahora verás que dentro de la subrutina estará el array @_ cargado con dichos valores, por ejemplo:
Código:
sub subrutina{

   print "@_"; # mostrará uno dos tres
   
   # si aplicamos un shift y no le asignamos ningun array, perl utilizará el array mágico, por tanto si hacemos:

    print shift; # devolvera uno
 
   # y
 
   print "@_"; # ahora devolvera dos tres

}
En el caso de
Código:
$self
es una convensión y viene a ser el objeto de la clase inicializada, siempre es el primero que vas a recibir, es probable que conozcas PHP $self es equivalente a $this, solamente que en Perl tenés que extraerlo del array mágico.


Pruebalo para ver lo que te indico.

Saludos.

Última edición por abcdefghi; 10/07/2010 a las 10:27

Etiquetas: shift
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.