foreach 루프를 사용하여 배열의 어떤 요소가 주어진 문자열과 같은지 확인하려면 어떻게해야합니까?

Question_Guy

내 foreach 루프가 원하는대로 작동하지 않습니다. 배열을 반복하고 한 요소가 있고 요소가 없을 때를 찾고 싶습니다. 그러나 나는 그들 모두에게 Not an apple.

@fruit = ('apple','orange','pear');

foreach(@fruit){
     if(@fruit != 'apple'){
          print "Not an apple\n";
     }
     else{
          print "Is an apple\n";
     }
}
mpapec

문자열은 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됩니까? 첫째,, !=의 요소 수를 제공하는 스칼라 컨텍스트에서 평가되는 왼쪽 결과입니다 . 반면 에 숫자가 아닌 은이 숫자 비교에서 동등성을 위해로 평가됩니다 . 따라서 배열의 각 요소에 대한 조건은 다음과 같이 줄어 듭니다.@fruit3'apple'0if

if (3 != 0) {

그리고 물론, 그것은 배열 요소가 무엇인지에 관계없이 배열의 모든 요소를 ​​유지합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관