[langage]& dans appel de procedure
bonjour bonjour,
j'ai remarque que certains programmaient en mettant un & devant les fonctions qu'ils declarait dans leur code.
Je m'explique :
Il y en a qui font comme ca (par exemple) :
Code:
1 2 3 4
| &do_work($argument);
sub do_work {
#blablabla
} |
Alors que moi j'ai plutot tendance a faire comme ca (par exemple) :
Code:
1 2 3 4
| sub do_work {
#blablabla
}
my ($variable) = do_work($argument); |
Est-ce que c'est que j'ai pris des cas particuliers sans faire attention ?
Merci d'avance !
Re: & dans appel de procedure
Bonjour,
Citation:
Envoyé par Batou
j'ai remarque que certains programmaient en mettant un & devant les fonctions qu'ils declarait dans leur code.
...
Est-ce que c'est que j'ai pris des cas particuliers sans faire attention ?
Merci d'avance !
La réponse se trouve, dès le début, dans la doc perlsub (Les sous-programmes de Perl). A la rubrique synopsis, on trouve :
Citation:
Envoyé par perldoc perlsub
To call subroutine :
NAME(LIST); # & is optional with parentheses.
NAME LIST; # Parentheses optional if predeclared/imported.
&NAME(LIST); # Circumvent prototypes.
&NAME; # Makes current @_ visible to called subroutine.
Il est donc évident que ce & a un usage précis : court-circuiter le prototype de la fonction ( pour passer des paramètres distincts ? mais pourquoi faire un prototype, alors ;) ), ou rendre @_ de la fonction courante visible à la fonction appelée.
Après, savoir si tous les programmeurs Perl utilisent ce & en connaissance de cause, c'est un autre problème.
Re: & dans appel de procedure
Citation:
Envoyé par Batou
j'ai remarque que certains programmaient en mettant un & devant les fonctions qu'ils declarait dans leur code.
C'est une archaïsme qui date de l'époque Perl 4 (autrement dit, le siècle dernier).
Continues à utiliser les parenthèse sur les appels de subs, c'est très bien comme ça.
N.