이 두 문장은 같은 의미입니까?이 두 문장이 같은가요?
if ($host eq '') {
print "Host exists\n";
}
그리고
if (defined $host) {
print "Host exists\n";
}
이 두 문장은 같은 의미입니까?이 두 문장이 같은가요?
if ($host eq '') {
print "Host exists\n";
}
그리고
if (defined $host) {
print "Host exists\n";
}
아니요, 이들은 다릅니다. 하나는 빈 문자열에 $host
을 비교하고 다른 하나는 $host
이 전혀 정의되어 있는지 (그리고 어떤 값이있을 수 있는지) 확인합니다.
나는 정의 된 부분을 시도 할 때 작동하지 않을 것이고 내가 잘못하고 있다고 생각했기 때문에 그들은 같았지만 나는 본다. 해명 해줘서 고마워. – ianc1215
$host
이 "localhost"
경우 제
호스트가 내 스크립트의 변수를 참조하지 않습니다. – ianc1215
@Solignis : 예, 변수'$ host'의 값이 "localhost"이면 정의되지만 ""와 같지 않으므로 두 명령문이 다른 결과를 생성합니다. –
당신이 첫 번째 변경하더라도 : 당신이 활성화 된 경고와 함께 실행하고 정의되지 않은 $host
을 떠난 경우에 당신이 볼 것 같은
if ($host ne '') ...
두 개의 문, 동등하지 않다.
$ perl -we 'my $host; print $host ne "" ? "Hi\n" : "Lo\n";'
Use of uninitialized value $host in string ne at -e line 1.
Lo
$ perl -we 'my $host; print defined $host ? "Hi\n" : "Lo\n";'
Lo
$ perl -we 'my $host = ""; print defined $host ? "Hi\n" : "Lo\n";'
Hi
$ perl -we 'my $host = ""; print $host ne "" ? "Hi\n" : "Lo\n";'
Lo
$
답변 중 하나는 "안녕하세요"입니다. 빈 문자열은 훌륭한 값입니다. undef
과 같지 않습니다.
가능한 한 깨끗하게 코드를 작성하려고하기 때문에 궁금합니다. – ianc1215
어떤 종류의 질문입니까? – SLaks