美文网首页
Perl 持久化私有变量

Perl 持久化私有变量

作者: PETJO | 来源:发表于2021-07-05 05:44 被阅读0次

    9. 持久化私有变量

    • 在子程序中用 my操作符可以创建私有变量,但每次调用子程序时,这个私有变量都会被重新定义。

    • state 操作符声明的变量可以在子程序的多次调用期间保留之前的值,并且其作用域仍局限在子程序内部。

    • 任意类型的变量都可以被声明为 state变量。

    sub marine {
        my $n += 1;    #每次调用子程序时,私有变量都会被重新定义
        print "Hello, sailor number $n!\n";
    }
    
    &marine;
    &marine;
    &marine;
    &marine;
    &marine;
    
    
    use v5.10;
    
    sub marine {
        state $n += 1;    # state 声明持久化私有变量
        print "Hello, sailor number $n!\n";
    }
    
    # 任意类型的变量都可以被 state 声明
    &running_sum(5, 6);
    &running_sum(1..3);
    &running_sum(4);
    
    sub running_sum {
        state $sum = 0;    # state声明标量变量
        state @numbers;    # state声明数组变量
    
        foreach my $number (@_) {
            push @numbers, $number;
            $sum += $number;
        }
    
        say "The sum of (@numbers) is $sum";
    }
    

    相关文章

      网友评论

          本文标题:Perl 持久化私有变量

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