next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Typeglobs Sup: Funciones de orden superior Ant: Funciones de orden superior Err: Si hallas una errata ...


Práctica: Emulación de un Switch

Vamos a realizar una función de orden superior: Emule la sentencia switch de C usando un hash de punteros a subrutinas. Escriba una función switch que recibe como segundo parámetro un hash con claves las constantes del case y como valores las referencias a las subrutinas. Cómo primer parámetro recibe un valor escalar. Según sea el valor deberá ejecutar la subrutina con clave correspondiente. Si no hay ninguna clave con ese valor deberá de ejecutar la subrutina que corresponde a la clave default, si tal clave existe en el hash.

En el ejemplo que haga para la llamada a la función switch use subrutinas anónimas cuando el código en cuestión lleve menos de una línea.

El módulo Switch de Damian Conway proporciona una sentencia switch mas completa. Sigue un ejemplo de uso:

$ cat -n useswitch.pl
     1  #!/usr/local/bin/perl5.8.0 -w
     2
     3  use Switch;
     4
     5  $val = shift;
     6
     7  switch ($val) {
     8    case 1 { print "number 1\n" }
     9    case "hello" { print "string hello\n" }
    10    else { print " none of these two\n" }
    11  }


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Typeglobs Sup: Funciones de orden superior Ant: Funciones de orden superior Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21