Bonjour,
J'aimerai savoir si comme en javascript il est possible de passer une fonction A en parametre d'une fonction B, afin d'appeler cette fonction A depuis la fonction B.
Bien entendu a chaque appel de A, B sera différente.
Merci
Bonjour,
J'aimerai savoir si comme en javascript il est possible de passer une fonction A en parametre d'une fonction B, afin d'appeler cette fonction A depuis la fonction B.
Bien entendu a chaque appel de A, B sera différente.
Merci
Linux because rebooting is just for adding medias
t'as pas besoin de passer la fonction A en paramètre pour l'appeler dans B. Tu l'appelle et c bon
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
en faites c bon je crois j'ai trouvé ce que je voulais faire :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #!/usr/bin/perl -w sub plop { print "c cool.\n"; } sub youpi { my ($sub) = @_; &$sub; } print "début\n"; youpi("plop"); print "fin\n";
Linux because rebooting is just for adding medias
c'est vraiment pas propre ce que tu as écrit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #!/usr/bin/perl -w use warnings; use strict; use Carp; sub plop { print "c cool.\n"; } sub youpi { plop(); } print "début\n"; youpi(); print "fin\n";
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Djibril écoute ce qu'on te dit : la fonction "plop" n'est qu'un exemple, il veut passer des fonctions différentes à chaque appel de youpi() !!
Néanmoins il ne le fait pas de façon très propre, sur ce point tu as raison :
ceci appelle effectivement plop() si elle existe, mais cela fait appel aux références symboliques (soft reference), qui sont extrêmement difficile à déboguer, ne t'avertissent absolument pas si tu as fait une erreur dans le nom de la fonction et sont de toute façon interdite sous le pragma strict (que tu devrais toujours utiliser).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 my $sub = "plop"; &$sub();
La façon propre de faire cela c'est :
Ici j'utilise une vraie référence (hard reference), je serais averti si je fais une erreur dans le nom de la fonction, les performances sont meilleures, le système est plus robuste...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #!/usr/bin/perl -w use warnings; use strict; use Carp; sub plop { print "c cool.\n"; } sub youpi { my $sub = shift; $sub->(); } print "début\n"; youpi(\&plop); print "fin\n";
Par ailleurs Perl supporte les fonctions anonymes, donc tu peux faire ça :
Tu peux même rendre la syntaxe plus plaisante (comme pour map ou grep) avec un petit prototype :
Code : Sélectionner tout - Visualiser dans une fenêtre à part youpi( sub { print "Ca marche !!" } );
Mais ce n'est pas forcément une très bonne idée..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 sub youpi (&) { my $sub = shift; $sub->(); } youpi { print "Ca marche !!" };
--
Jedaï
désolé pour le code pas très propre je débute en perl.
Merci pour vos réponses ce que je voulais faire marche nikel.
Linux because rebooting is just for adding medias
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager