Perl Language
Vrai et faux
Recherche…
Syntaxe
- undef # faux
- '' # Défini, faux
- 0 # défini, a la longueur, faux
- '0' # défini, a la longueur, faux
Remarques
Perl n’a pas de type de données booléen, et n’a pas non plus de mots-clés true
et false
comme beaucoup d’autres langues. Cependant, chaque valeur scalaire est évaluée à true ou false lorsqu'elle est évaluée dans un contexte booléen (la condition dans une instruction if ou une boucle while, par exemple).
Les valeurs suivantes sont considérées comme fausses:
-
''
, la chaîne vide. C'est ce que les opérateurs de comparaison intégrés renvoient (par exemple,0 == 1
) -
0
, le nombre 0, même si vous écrivez comme 000 ou 0.0 -
'0'
, la chaîne qui contient un seul 0 chiffre -
undef
, la valeur indéfinie - Objets qui utilisent la surcharge pour numify / stringify en valeurs fausses, telles que
JSON::false
Toutes les autres valeurs sont vraies:
- tout nombre non nul tel que
1
,3.14
,'NaN'
ou'Inf'
- n'importe quelle chaîne qui est numériquement 0 mais pas littéralement la chaîne
'0'
, telle que'00'
,'0e0'
,"0\n"
et"abc"
.
Si vous retournez intentionnellement une vraie valeur numérique, préférez'0E0'
(utilisé par les modules bien connus) ou'0 but true'
(utilisé par les fonctions Perl) - toute autre chaîne qui n'est pas vide, telle que
' '
,'false'
- toutes les références, même si elles font référence à des valeurs fausses, telles que
\''
,[]
ou{}
- un tableau ou un hachage de valeurs fausses
Les opérateurs suivants sont généralement traités pour renvoyer un booléen dans un contexte scalaire:
@a
si le tableau est vide ou non%h
retourne si le hachage est vide ou nongrep
retourne si des éléments correspondants ont été trouvés ou non@a = LIST
et(LIST) = LIST
renvoie si la liste de droite a produit des scalaires ou non
Liste des valeurs vraies et fausses
use feature qw( say );
# Numbers are true if they're not equal to 0.
say 0 ? 'true' : 'false'; # false
say 1 ? 'true' : 'false'; # true
say 2 ? 'true' : 'false'; # true
say -1 ? 'true' : 'false'; # true
say 1-1 ? 'true' : 'false'; # false
say 0e7 ? 'true' : 'false'; # false
say -0.00 ? 'true' : 'false'; # false
# Strings are true if they're not empty.
say 'a' ? 'true' : 'false'; # true
say 'false' ? 'true' : 'false'; # true
say '' ? 'true' : 'false'; # false
# Even if a string would be treated as 0 in numeric context, it's true if nonempty.
# The only exception is the string "0", which is false.
# To force numeric context add 0 to the string
say '0' ? 'true' : 'false'; # false
say '0.0' ? 'true' : 'false'; # true
say '0e0' ? 'true' : 'false'; # true
say '0 but true' ? 'true' : 'false'; # true
say '0 whargarbl' ? 'true' : 'false'; # true
say 0+'0 argarbl' ? 'true' : 'false'; # false
# Things that become numbers in scalar context are treated as numbers.
my @c = ();
my @d = (0);
say @c ? 'true' : 'false'; # false
say @d ? 'true' : 'false'; # true
# Anything undefined is false.
say undef ? 'true' : 'false'; # false
# References are always true, even if they point at something false
my @c = ();
my $d = 0;
say \@c ? 'true' : 'false'; # true
say \$d ? 'true' : 'false'; # true
say \0 ? 'true' : 'false'; # true
say \'' ? 'true' : 'false'; # true
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow