passage de paramètre à une fonction - Perl - Programmation
Marsh Posté le 14-11-2011 à 23:09:36
Citation : est-ce impossible d'ajouter une variable après le % ? |
Oui et non:
Ce qui bloque dans ton code, c'est le
my ($val1, $val2, %valx, $newval)
Parce que ça, ça essaie de prendre 2 par 2 tout ce qui reste pour en faire un hash.
Code :
|
Ça marche, mais ça génère aussi des warnings (sub mafonction($$$$) n'en générera pas).
Noter qu'on passe un "anonymous array", comme il est d'usage dans les appels de fonctions en perl.
La logique du système, c'est qu'en principe, un @ ou un % ne peuvent figurer qu'en dernière position, car en principe, ils "mangent" les arguments (bon, dans la pratique, ce ne semble plus vraiment être la cas, au vu de ce que j'ai posté avec un warning).
La documentation est loin d'être claire sur le sujet (emploi de + par exemple), et ça fait partie des zones de perl qui gagneraient a avoir un bon tutorial.
Mais bon, le terme prototype en Perl est très trompeur: ce n'est pas vraiment une vérification de prototype mais plutôt une manière de forcer 1) le nombre d'arguments et 2) l'interprétation (scalaire, liste...) des arguments rencontrés.
Pour un des rares cas d'emplois utile des prototypes en Perl, cf http://www.perlmonks.org/?node_id=406231
Il vaut mieux aller voir du côté du module Params::Validate par exemple, pour une vérification (éventuellement poussée) du type des paramêtres passés à une fonction, si on en a besoin.
A+,
Marsh Posté le 14-11-2011 à 15:14:55
salut,
J'ai une fonction de ce type :
et je souhaiterai lui ajouter un paramètre à cette fonction
donc j'ai fait ceci
J'appel la fonction dans un script :
mais j'ai cette erreur
Odd number of elements in hash assignment
pourquoi ?
est-ce impossible d'ajouter une variable après le % ?
je pourrai rajouter $newval avant %valx mais
je ne peux pas,
il y aurait trop d'impact en terme de modification.
merci
Message édité par donny3 le 14-11-2011 à 15:29:16