내 foreach 루프가 원하는대로 작동하지 않습니다. 배열을 반복하고 한 요소가 있고 요소가 없을 때를 찾고 싶습니다. 그러나 나는 그들 모두에게 Not an apple
.
@fruit = ('apple','orange','pear');
foreach(@fruit){
if(@fruit != 'apple'){
print "Not an apple\n";
}
else{
print "Is an apple\n";
}
}
문자열은 eq
(같음) 및 ne
( 같지 않음)을 사용하여 비교됩니다 . $_
암시 적 foreach
변수이며 다음과 같이 사용해야합니다.
if ($_ ne 'apple')
명시 적 루프 변수를 사용하려는 경우 :
foreach my $v (@fruit) {
if($v ne 'apple'){
print "Not an apple\n";
}
else{
print "Is an apple\n";
}
}
자, 왜 "Not an apple\n"
모든 요소에 대해 모두 인쇄 @fruit
됩니까? 첫째,, 즉 !=
의 요소 수를 제공하는 스칼라 컨텍스트에서 평가되는 왼쪽 의 결과입니다 . 반면 에 숫자가 아닌 은이 숫자 비교에서 동등성을 위해로 평가됩니다 . 따라서 배열의 각 요소에 대한 조건은 다음과 같이 줄어 듭니다.@fruit
3
'apple'
0
if
if (3 != 0) {
그리고 물론, 그것은 배열 요소가 무엇인지에 관계없이 배열의 모든 요소를 유지합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다