【问题标题】:Why are the numbers 1-5 output with "state" and 11111 with "my"? And what does "state" do in general?为什么数字 1-5 输出带有“state”而 11111 带有“my”? “状态”一般做什么?
【发布时间】:2022-07-11 17:47:19
【问题描述】:

为什么数字 12345 输出带有“state”而 11111 带有“my”?

sub Counter{
    
    state $i= 0;
    $i++;
    print "$i\n";
}

for (1..5){
    Counter();
}

【问题讨论】:

  • my 变量的作用域是代码块,每次代码块运行时它们都会重新初始化。 state 变量,具有相同的作用域,它们不是全局的,但它们只是第一次初始化,并且每次运行之间的值都保持不变。

标签: perl


【解决方案1】:

来自the docs

state 声明了一个词法范围的变量,就像 my.但是,这些变量将永远不会重新初始化,这与每次进入其封闭块时都会重新初始化的词法变量相反。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2014-02-25
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多