bonjour,
ma question est simple mais pourtant je ne trouve pas de doc dessus.
Comment peut on utiliser des references de fonctions dans une table de hash (aussi bien clef que valeur)
merci
a+
bonjour,
ma question est simple mais pourtant je ne trouve pas de doc dessus.
Comment peut on utiliser des references de fonctions dans une table de hash (aussi bien clef que valeur)
merci
a+
en clé c'est impossible (en fait ta clé sera la version stringifiée de la reference à la sub, genre "CODE(0x3453)")
en valeur il suffit de mettre ta ref de sub:ou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part $a{sub} = sub{print "ok"}et pour l'utiliser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $a{sub} = \&test;
Code : Sélectionner tout - Visualiser dans une fenêtre à part $a{sub}()
merci de la réponse
et quand est t-il pour faire une référence vers une méthode d'un objet ?
donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part $hash{clef} = \&$objet->method;
Not a CODE reference
Et s'il est impossible de mettre une reference vers fonction en clef, comment faire pour executer une fonction selon le code retour d'une autre ?
a+
si tu veux mettre une methode il faut en tirer une ref de sub:appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $hash{clef} = $self->can('method');ou bien en incluant $self dans une sub anonyme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $hash{clef}($self);appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $hash{clef} = sub {$self->method(@_)};pour ta seconde question je ne comprend pas exactement ce que tu veux faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $hash{clef}();
Decrit nous ton probleme exacte, car en fait il y a de fortes chances pour que ton approche ne soit pas la plus adaptée.
par exemple pour appeler une methode quelconque sur un objet sais tu que tu utiliser une vairable comme methode ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my $methode = 'blabla'; $self->$methode(); # equivalent à $self->blabla()
mh.. et pour mettre des paramètres a la fonction ? j'ai pas reussi..
En fait, mon but est de faire une série de tests effectués par des fonctions diverse (une fonction, un test)
En, parfois, en fonction du retour de la fonction, effectuer une action (executer une fonction) précise. En sachant qu'un test ne peut avoir qu'une action.
C'est pour ca que je pensais a une table de hash dans laquelle une fonction était associée a une fonction
a+
pour ajouter des arguments tu peux les mettre dans ta sub anonyme:pour ce qui est du retour de tes fonctions tu peux effectivement les mettre en clé de hash, mais ce ne seront que les pointeurs de fonction ("CODE(0x34334)"), donc tu ne pourra pas les executer, mais effectivement tu pourra les identifier (si ta fonction retourne la meme reference de fcontion que celle que tu a dans ta hash)
Code : Sélectionner tout - Visualiser dans une fenêtre à part $hash{clef} = sub {$self->method(1,3,4)};
Partager