Perl 子程序中的私有变量

2021-06-27  本文已影响0人  PETJO

3. 子程序中的私有变量

sub max { # 创建私有变量,几乎所有的 perl子程序类似程序代码开头
    my ($m, $n); # 封闭语句块中的私有变量,与外部变量互不影响
    ($m, $n) = @_; # 将参数赋值给变量
    if ($m > $n) {
        $m;    # perl 允许省略语句块中最后一个分号
    } else {
        $n;    # 但实际上只有代码简单到整个语句块内只有一行时,才可以省略
    }
}

my $result = &max(1, 2, 3, 4, 5);
print $result . "\n";

# 上述代码的简洁写法
sub max {
    my ($m, $n) = @_;
    if ($m > $n) { $m } else { $n }
}

$result1 = &max(6, 7, 8, 9, 10)
print $result1 . "\n";
# 变长参数列表
sub max { 
    if (@_ != 2) { # 通过检查 @_ 数组的长度来判断参数个数是否符合预期。
        print "WARNING! &max should get exactly two arguments!\n"
    }
    my ($m, $n) = @_;
    if ($m > $n) { $m } else { $n }
}

$result3 = &max(11, 12, 13, 14, 15)
print $result . "\n";

# 改写&max,使之能够接受任意数目的参数
my $maximum = &max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
print $maximum . "\n";

sub max {
    my($max_so_far) = shift @_;
    foreach (@_) {
        if ($_ > $max_so_far) {
            $max_so_far = $_;
        }
    }
    $max_so_far;
}
上一篇下一篇

猜你喜欢

热点阅读