1
Puis-je définir une variable uniquement si un paramètre est faux?
J'ai quelque chose comme:Initialisation conditionnelle/définition de la variable
my $object = Class::create($args);
for my $i (@input) {
if ($test) {
# print some info here
next;
}
#use of $object here
}
Si je fais quelque chose comme:
my $object = Class::create($args) unless ($test);
est qu'une approche correcte pour l'initialisation?
'my $ object =! $ Test && Classe :: create ($ args);' –
@ Сухой27: Pour être honnête, il est très difficile de comprendre exactement ce qui se passe (au moins pour moi) – Jim
@Jim && '(and' and') en court-circuit Perl _et renvoyer la valeur_ (pas vrai/faux). Donc, si '! $ Test' renvoie une valeur falsey (le critère de votre code) alors le reste de l'instruction n'est pas évalué et le retour de'! $ Test' est assigné à '$ object' (vraisemblablement' undef', emtpy string, etc - dépend de la façon dont votre '$ test' est conçu). Si, cependant, '! $ Test' renvoie une valeur de vérité _then_ le reste va. Cela implémente les 6 lignes de votre exemple, correctement. Notez que la réponse de mob a l'avantage de définir '$ object' spécifiquement à' undef' (et ne pas compter sur le retour de '! $ Test'). – zdim