• Publicidad

Devolver (return) más de un valor de una función

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

Devolver (return) más de un valor de una función

Notapor escanda » 2008-08-06 09:45 @448

Hola, ¿qué tal? Como verán soy principiante en esto y quería saber si se puede y cómo es para que una función me devuelva más de un valor, para luego llamar a cada una de las variables devueltas y que tengan el valor devuelto en la función.

Gracias.
escanda
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-07-11 10:15 @469

Publicidad

Notapor explorer » 2008-08-06 09:53 @453

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

sub funcion {
    return 'a', 1, 'd', 3.2, sqrt(2);
}

my ($letra,$valor,$otraletra,$otrovalor,$raiz) = funcion();

print "$letra,$valor,$otraletra,$otrovalor,$raiz\n";

__END__
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Solo tienes que devolver eso, una lista de valores. Si son muchos, entonces es mejor usar la técnica de devolver una referencia a la estructura que almacena esos valores.
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

Notapor teco000 » 2008-08-06 09:56 @455

YO APRENDÍ CON ESTE MANUAL QUE ME ENVIÓ KIDD
http://perlenespanol.com/tutoriales/fun ... iones.html
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Notapor escanda » 2008-08-06 10:20 @472

Gracias por la respuesta, explorer, pero he probado exactamente eso y no funciona. ¿Otra alternativa?

Gracias.
escanda
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-07-11 10:15 @469

Notapor explorer » 2008-08-06 11:19 @513

¿Qué quieres decir que no funciona? Yo pruebo todos los códigos que publico salvo en aquellos que pongo la frase 'no probada'.

A mi la función sí que me devuelve varios valores... ¿seguro que lo has probado bien? ¿Qué es lo que te devuelve?
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

Notapor kidd » 2008-08-06 11:34 @523

O mejor, ¿por qué no pones el código que deseas usar?
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor escanda » 2008-08-07 11:32 @522

Gracias por todo, ya he logrado resolver el problema, faltaba ponerle un & delante de funcion():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my ($letra,$valor,$otraletra,$otrovalor,$raiz) = &funcion();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Muchas gracias.
escanda
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-07-11 10:15 @469

Notapor explorer » 2008-08-07 11:39 @527

Eso es porque has puesto la definición de la función DESPUÉS de donde la usas.

Y que tienes un Perl muy antiguo.
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

Notapor Jenda » 2008-08-08 18:41 @820

No es verdad. No hay ninguna diferencia entre
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my ($letra,$valor,$otraletra,$otrovalor,$raiz) = &funcion();
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my ($letra,$valor,$otraletra,$otrovalor,$raiz) = funcion();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Y no depende de la posición de la definición de function(). Si hay esos (), no es necesario el &.

PERO se debe solo usar & con \ cuando quieres tomar la referencia de la función. Solamente en ese caso. La cosa es que &funcion puede hacer algo diferente de lo que quieres. Si haces
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my ($letra,$valor,$otraletra,$otrovalor,$raiz) = &funcion;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

eso significa algo un poquito diferente de las líneas anteriores. En este caso la función recibe, como parámetros, todo lo que contiene @_. Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub foo {
  print "Params: ( '", join("', '", @_), "' )\n";
}

sub bar {
 print "Primero:\n";
 foo();
 print "Segundo:\n";
 &foo();
 print "Tercero:\n";
 &foo;
}

bar(1,2,3);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado