Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Valor desaparecido de una función en contexto lista

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Sab Jun 23, 2007 4:45 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
Valor desaparecido de una función en contexto lista Responder citando

Del siguiente programa, publicado ayer en PerlMonks:
Perl:
sub foo { return; }
sub bar {
   my ($a, $b, $c) = @_;
   return if !defined $b;
   die    if !defined $c;
}
bar(1, foo(), 3);       # explodes
Está puesto como ejemplo para rebatir la recomendación de Damian de que las funciones deben devolver con un simple return en caso de querer indicar un fallo en la función (pág. 199 del PBP).

De esa manera, en contexto lista, devolvería una lista vacía mientras que en contexto escalar devolvería un valor undef.

Pero en el ejemplo mostrado, foo() devuelve el return y es evaluado en contexto lista, por estar en mitad de los argumentos que se le pasan a bar(). La pregunta es: ¿por qué desaparece ese valor de la lista de argumentos? Sabemos que desaparece porque bar() explota en el die, queriendo decir que el argumento $c no ha sido definido (ha saltado una posición).

¿En qué parte de la documentación se menciona este efecto?
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group