Déclarez plusieurs variables sur une ligne en perl
J'ai trouvé que je peux déclarer deux variables en une seule instruction à l'aide de:
my ($a,$b)=(1,2);
Mais je pense que cette syntaxe peut être source de confusion, par exemple, si nous avons eu cinq variables déclarations, il serait difficile de voir la valeur appartient à quelle variable. Donc, je pense que ce serait mieux si nous pouvions utiliser cette syntaxe:
my $a=1, $b=2;
Je me demande, pourquoi est ce genre de déclaration n'est pas possible dans Perl? Et existe-il des alternatives?
(J'essaie d'éviter de répéter my
pour chaque déclaration comme: my $a=1; my $b=2;
)
source d'informationauteur Håkon Hægland
Vous devez vous connecter pour publier un commentaire.
Pas. Les Variables déclarées par
my
sont nommés une fois l'instruction suivante commence. La seule façon que vous pouvez affecter à la variable nouvellement créée est si vous affectez à la variable qu'il renvoie. Pensez àmy
commenew
qui déclare également.Comme pour votre code particulier,
signifie
Évidemment, pas bon.
Si vous aviez utilisé des variables qui n'ont pas déjà été déclarée[1]vous avez obtenu un strict erreur.
$a
et$b
sont predeclared dans chaque espace de noms pour faciliter l'utilisation desort
.Je suis nouveau sur Perl, mais je vais vous dire ce que j'ai appris jusqu'à présent.
Je vais le changer à l'aide de
$start
et$end
au lieu de$a
et$b
parce que$a
et$b
sont des variables spéciales qui sont toujours déclarés.Pour répondre à votre question initiale, vous pouvez déclarer et affecter plusieurs variables en une seule ligne comme ceci:
Personnellement, je trouve que sur le même typage et moins clair que d'avoir chacun sur une ligne distincte:
Cependant, je pense qu'il est utile d'assigner des paramètres de sous-programme pour les variables nommées, parce que les paramètres de sous-programme viennent dans une liste appelée
@_
:Vous pouvez voir plus de bizarreries de la
my
déclaration dans la documentationy compris une façon d'ignorer certaines valeurs dans la liste.Ci-dessous est la méthode pour déclarer plusieurs variables sur une même ligne en perl:
mon ($jour,$mon,$an,$rh,$min,$sec) = (0) x 6;
Ici, toutes les variables ci-dessus a été initialisé à 0. La répétition de l'opérateur " x " est utilisé.
Pour éviter toute confusion dans ces cas, on peut généralement faire comme ceci:
Selon la Principe de BAISER.
ikegami notes de l'alternative serait de: