Perl Language
Prawda i fałsz
Szukaj…
Składnia
- undef # False
- '' # Zdefiniowane, Fałsz
- 0 # Zdefiniowane, Ma długość, Fałsz
- „0” # Zdefiniowane, ma długość, fałszywe
Uwagi
Perl nie ma logicznego typu danych, ani nie ma true
i false
słów kluczowych, jak wiele innych języków. Jednak każda wartość skalarna będzie miała wartość true lub false, gdy zostanie oszacowana w kontekście logicznym (na przykład warunek w instrukcji if lub pętli while).
Następujące wartości są uważane za fałszywe:
-
''
pusty ciąg. To zwracają wbudowane operatory porównania (np.0 == 1
) -
0
, liczba 0, nawet jeśli napiszesz jako 000 lub 0,0 -
'0'
, ciąg zawierający jedną cyfrę 0 -
undef
, niezdefiniowana wartość - Obiekty używające przeciążenia do numerowania / łączenia w fałszywe wartości, takie jak
JSON::false
Wszystkie pozostałe wartości są prawdziwe:
- dowolna liczba niezerowa, taka jak
1
,3.14
,'NaN'
lub'Inf'
- dowolny ciąg, który jest liczbowo 0, ale nie dosłownie ciąg
'0'
, taki jak'00'
,'0e0'
,"0\n"
i"abc"
.
Jeśli celowo'0E0'
wartość liczbową 0, wybierz'0E0'
(używane przez dobrze znane moduły) lub'0 but true'
(używane przez funkcje Perla) - każdy inny ciąg znaków, który nie jest pusty, taki jak
' '
,'false'
- wszystkie odwołania, nawet jeśli odnoszą się do fałszywych wartości, takich jak
\''
,[]
lub{}
- tablica lub skrót fałszywych wartości
Następujące operatory są zwykle traktowane w celu zwrócenia wartości logicznej w kontekście skalarnym:
@a
zwraca, czy tablica jest pusta, czy nie%h
zwraca, czy skrót jest pusty, czy niegrep
zwraca informację, czy znaleziono pasujące elementy, czy nie@a = LIST
i(LIST) = LIST
zwraca, czy(LIST) = LIST
po prawej stronie produkuje jakiekolwiek skalary, czy nie
Lista wartości prawda i fałsz
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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow