2017-12-02 4 views
0
use strict; 
use warnings; 

sub maximum_value { 

    my @array = @_; 
    my @array1 = shift(@_); 
    my @array2 = push(@_, 0); 

    print "@array\n"; 
    print "@array1\n"; 
    print "@array2\n"; 

    my $i = 0; 

    foreach (@array) { 

     if ($i < $_) { 
      $i = $_; 
     } 
    } 

    print "\nMax Value is $i"; 
} 

maximum_value(10, 15, 11, 13); 

이것은 펄 스크립트입니다. 값을 서브 루틴으로 전달하고 @_에 저장하고 있습니다. @array2은 (으)로 평가되는 이유는 무엇입니까?"푸시"가 반환하는 값을 이해할 수 없습니다.

+2

이미 좋은 대답을 얻었으나'@ array2'에있을 것으로 예상되는 내용을 물어볼 수 있습니까? – PerlDuck

답변

8

perldoc -f push 상태 :

는 완성 된 푸시 다음과 같은 배열의 요소의 수를 돌려줍니다. 네 개의 요소

  1. 귀하의 @_ 시작 당신은 4 개 인수로 서브를 호출하기 때문이다.
  2. shift@_ 배열의 첫 번째 요소입니다. shift은 제거 된 요소를 리턴합니다. @_ 배열에는 이제 3 개의 요소가 포함됩니다.
  3. push@_ 배열의 끝 부분에 0이 표시되며 4 개의 요소가 다시 포함됩니다. push은 요소 수를 반환하고 @array2에 할당합니다.
관련 문제