Perl學習筆記 之 [ 函數, 參數, @_, $_, $_[0], shift ]

1. Perl函數
  經過 & 調用.

2. Perl參數
  Perl自然支持可變數目個參數。
  在函數內部,全部參數按順序放在數組 @_ 中。
  在函數內部,$_[0] 表示函數的第一個參數。其他類推。

3. shift
  shift 後跟一個數組,表示將數組的第一個值返回。數組也被改變,其第一個元素被彈出。

演示代碼一(求最大值): 算法

#!/usr/bin/perl -w 數組

use strict; 函數

# 調用函數max,取得一組數值的最大值,並輸出。
my $maxValue = &max(11,22,33);
print "maxValue=$maxValue\n"; 學習

sub max { foreach


    # 採用遍歷算法。先將參數中的第一個值賦給$currentMaxValue。
    # @_ 是默認的包含本函數全部參數 [如(11,22,33)]的數組。
    # shift @_ 有兩個結果: 1. 將數組 @_ 中的第一個值作爲返回值(賦給了$currentMaxValue). 2. 將@_數組第一個值彈出[此後@_的值變爲(22,33)].
    my $currentMaxValue = shift @_; perl

    # 函數中使用shift時,@_能夠省略。上面代碼也能夠寫成這樣。
#  my $currentMaxValue = shift; 遍歷


    # 遍歷整個@_數組。
    foreach ( @_ ) { co


        # $_ 表示數組@_中當前被遍歷到的元素.
        if ( $_ > $currentMaxValue ) { return


            # 若是發現當前數組元素比$currentMaxValue大,那就將$currentMaxValue從新賦值爲當前元素。
            $currentMaxValue = $_;
        }
    } 參數

    # 函數返回值爲標量$currentMaxValue.
    return $currentMaxValue;
}

 

演示代碼二(求和):

#!/usr/bin/perl -w


use strict;

# 求一組數的和並打印。
my $s1 = &sum1(11,22,33);
my $s2 = &sum2(22,33,44);
my $s3 = &sum3(11,22,33,44,55);
print "s1=$s1, s2=$s2, s3=$s3\n";

# 辦法1
sub sum1 {
    # 將參數數組的前三個元素值相應地賦給($first, $second, $third)
    (my $first, my $second, my $third) = @_;
    
    # 返回其和值。缺點: 若是是求四個參數的和,依然只能給出前三個的和。
    return $first + $second + $third;
}

# 辦法2
sub sum2 {
    # $_[0] 表示參數數組@_的第一個元素。其他類推。
    my $first = $_[0];
    my $second = $_[1];
    my $third = $_[2];
    
    # 返回其和值。缺點: 同sum1. 只是經過這裏學習 $_[0] 這種用法。
    return $first + $second + $third;
}

# 辦法3, 參數能夠任意多。都能求其和。 sub sum3 {     my $s = shift @_;          foreach ( @_ ) {         $s = $s + $_;     }          # 同前面函數max。     return $s; }

相關文章
相關標籤/搜索