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 nie

  • grep 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