美文网首页
Perl 子程序省略&号和非标量返回值

Perl 子程序省略&号和非标量返回值

作者: PETJO | 来源:发表于2021-07-04 10:53 被阅读0次

    7. 省略&号

    • Perl 通过语法规则判断只能是子程序调用,就可以像内置函数那样省略与号。
    • 如果 Perl的内部编译器已经见到过子程序的定义,那么通常也可以省略与号。
    • Perl子程序和内置函数同名,就必须使用与号调用。
    • 最好永远不要省略&号,避免歧义。
    my @cards = shuffle(@deck_of_cards);    # &shuffle上的 &是多余的
    
    sub division {
        $_[0]/$_[1];
    }
    
    my $quotient = division(355, 113);    # 用之前定义的 &division
    print $quotient . "\n";    
    
    sub chomp {
        print "Munch, munch!\n";
    }
    
    &chomp;    #必须使用 &,绝不能省略,内置函数歧义
    

    8. 非标量返回值

    • 子程序不仅可以返回标量值,如果在列表上下文中调用它,还可以返回列表值。
    • wantarray函数测试,为真时返回列表,为假时返回标量。
    • 单写一个 return不给任何参数时,在标量上下文中的返回值就是 undef,在列表上下文中则是空列表。
    my $fred = 11;
    my $barney = 6;
    my @array_rev = &list_from_fred_to_barney;
    $" = ",";
    print "@array_rev \n";
    
    sub list_from_fred_to_barney {
        if ($fred < $barney) {
            $fred..$barney;
        } else {
            reverse $barney..$fred;
        }
    }
    

    相关文章

      网友评论

          本文标题:Perl 子程序省略&号和非标量返回值

          本文链接:https://www.haomeiwen.com/subject/feumultx.html