• Publicidad

Función return() en subrutinas

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Función return() en subrutinas

Notapor erv-Z » 2009-10-31 17:05 @754

Buenas, he visto muchas subrutinas y la mayoría utiliza la función return(), pero no entiendo bien el funcionamiento. Leí el tutorial acerca de ellas y no entendí mucho lo que digamos, a ver si podés darme algunos ejemplos.

Saludos.
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Publicidad

Re: Funcion return en subrutinas

Notapor explorer » 2009-10-31 17:16 @761

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "La circunferencia de radio 5 es: ", circunferencia(5), "\n";

sub circunferencia {
    my $radio = $_[0];

    return 2 * 3.1415 * $radio;
}
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Función return() en subrutinas

Notapor erv-Z » 2009-10-31 20:54 @912

Okaaa, ya entendí cómo funcionaba; ese problema me surgió y nunca lo pude resolver porque usualmente llamaba a las subrutinas con &subrutinas. Al llamarla subrutinas(), entre los paréntesis puedo poner algún valor, pero lo que me llamo la atención fue $_[0] ya que es ARGV[0] y en subrutina se pone $_[0], pero no estoy mandando datos por la terminal y no le encuentro lógica...

Saludos.
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Función return() en subrutinas

Notapor creating021 » 2009-10-31 21:32 @939

Realmente $_[0] no es ARGV, de hecho es similar a shift @_

Para no enredarte te pongo un link :mrgreen:
Tutorial - Crea tus propias funciones

De todos modos agrego:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub hacer {
    my $numero = shift;
# A @_ le quitamos el primer valor que $numero adopta.
    my $resultado = 100 * $numero;
    return $resultado;
}

my $tareas = hacer(12);
print "Tienes $tareas por hacer\n"
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Esto es lo que pasa, al llamar hacer(12), estamos guardando el valor 12 en @_ que es una array local (definida como [12] sólo dentro de la función, al hacer la llamada) y que quitamos de @_ por medio de shift y le asignamos el valor a $numero.
Si lo dejamos como $numero = $_[0], los valores dentro de @_ se mantienen.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Re: Función return() en subrutinas

Notapor explorer » 2009-11-01 12:44 @572

@ARGV y @_ son distintos arreglos.

@ARGV almacena los parámetros pasados al programa.

@_ almacena los parámetros pasados a la función.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 23 invitados