Perl Language
진실과 거짓
수색…
통사론
- undef # False
- ''# 정의 됨, 거짓
- 0 # 정의 됨, 길이 있음, 거짓
- '0'# 정의 됨, 길이 있음, 거짓
비고
Perl에는 부울 데이터 유형이 없으며 다른 많은 언어와 마찬가지로 true
및 false
키워드가 없습니다. 그러나 부울 컨텍스트 (if 문 또는 while 루프의 조건)에서 평가할 때 모든 스칼라 값은 true 또는 false로 평가됩니다.
다음 값은 false로 간주됩니다.
-
''
, 빈 문자열. 이것은 내장 비교 연산자가 반환하는 것입니다 (예 :0 == 1
). -
0
, 000 또는 0.0으로 쓰더라도 0입니다. -
'0'
, 단일의 0의 숫자를 포함한 캐릭터 라인 -
undef
, 정의되지 않은 값 - 오버로드 를 사용하여
JSON::false
와 같이 거짓 값으로 음수화 / 문자열화하는 객체
다른 모든 값은 true입니다.
-
1
,3.14
,'NaN'
또는'Inf'
와 같은 0이 아닌 숫자. - 수치 적으로 0이지만 문자 그대로
'00'
,'0e0'
,"0\n"
및"abc"
'0'
와 같은 문자열'0'
아닌 문자열.
의도적 으로 실제 0 값을 반환하는 경우 잘 알려진 모듈에서 사용되는'0E0'
또는 Perl 함수에서 사용되는'0 but true'
선호합니다. -
' '
,'false'
와 같이 비어 있지 않은 다른 문자열 - 모든 참조는
\''
,[]
또는{}
와 같은 거짓 값을 참조하더라도 - false 치의 배열 또는 해시
다음 연산자는 일반적으로 스칼라 컨텍스트에서 부울을 반환하도록 처리됩니다.
@a
배열이 비어 있는지 여부를 반환합니다.%h
는 해시가 비어 있는지 여부를 반환합니다.grep
은 일치하는 항목이 있는지 없는지를 반환합니다.@a = LIST
및(LIST) = LIST
오른쪽에 LIST가 스칼라를 생성했는지 여부를 반환합니다.
true 및 false 값 목록
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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow