[Perl] switch() vs hash de fonctions

switch() vs hash de fonctions [Perl] - Perl - Programmation

Marsh Posté le 03-05-2005 à 10:54:44    

je travaille actuellement sur un petit programme en Perl et j'ai besoin d'un opérateur de type switch() ... case...
 
en cherchant un peu sur le net, j'ai trouvé qu'il existait dans Perl, mais que c'était surtout un "bricolage" de la part des développeurs et j'aurais donc aimé avoir vos avis sur la question  :jap:
 
D'autre part j'ai cherché des alternatives, et j'en ai trouvé 2:
 

  • une suite de if() elseif() ... c'est probablement le plus simple pour le remplacer, mais je trouve ça "moche"


  • un hash de fonctions... alors, cette solution a attiré mon attention, j'ai du activer mon cerveau pendant qques minutes pour comprendre ce que c'était et comment l'utiliser [:tsouille] en gros, c'est un hash de références à des fonctions. ça a le mérite d'être original et les commentaires que j'ai pu lire parlaient même d'une solution avantageuse niveau performances


 
bon, je n'ai pas spécialement besoin de perfs, mais je trouvais ça sympa et original (tant qu'à programmer, autant s'amuser)... et je suis donc également à la recherche de commentaires sur le sujet: qu'en pensez-vous ? l'avez vous déjà utilisé ? avez vous d'autres solutions ? ...
 
merci


Message édité par darkpenguin le 03-05-2005 à 10:58:34

---------------
Counting all the assh*les in the room, well I'm definitely not alone...
Reply

Marsh Posté le 03-05-2005 à 10:54:44   

Reply

Marsh Posté le 03-05-2005 à 11:05:04    

Personnellement, j'utilise un simple bloc, type :
 

Code :
  1. SWITCH: {
  2.      (/exemple_1/) and (test2 = machin) =~ s/.*?(\w+?)$/$1/ and last SWITCH;
  3.      (/etc etc./) and (test_n = truc) =~ s/.*?(\w+?)$/$1/ and last SWITCH;
  4. }


Reply

Marsh Posté le 04-05-2005 à 14:17:59    

moi j'utilise les if() elsif()

Reply

Marsh Posté le 09-05-2005 à 09:45:36    

le hash de dispatch c'est une solution elegante mais pas forcement meilleur en terme de perfs.
 
en gros si tu a beaucoup de tests ca peut etrze avantageux plutot que de les tester lineairement chacun, mais il ne faut pas oublier que tu a un appel de fonction tout de meme. Donc faut tester si ca permet de gagner en perfs et/ou en lisibilité

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed