gpt4 book ai didi

perl - 全局变量在子程序中重置自身

转载 作者:行者123 更新时间:2023-12-05 01:01:45 26 4
gpt4 key购买 nike

请原谅我这个(可能)愚蠢的问题,但我正在弄乱这段代码(实际上是一个更大程序中的某个模型),有些东西让我失望:

sub recurse { 
my $m = shift;
$g .= "::" . $m;
if ($m == 0) { return $g; }
else { $m--; recurse ($m); }
}

for ($i = 0; $i < 3; $i++)
{
my $g = '';
$str = recurse (10);
print $str . "\n";
}

“for”循环的第一次迭代工作正常。然而,在随后的迭代中,我遇到了问题。如您所见,在调用递归函数之前,全局变量 $g 在“for”循环中首先被重置。使用调试器,我可以看到 $g 在调用函数之前被设置回 '' 。但是,一旦输入“recurse”函数,它就会返回到先前的值。我在这里缺少什么?

作为必然结果,我不喜欢在这里使用全局变量。在不使 $g 成为 recurse() 的参数的情况下,“正确”的方法是什么?

最佳答案

my $g 是一个局部变量,因此它与您在 recurse 中使用的变量不同。删除 my 将解决这个问题,尽管它仍然是一个丑陋的代码。

您可以将 $g 的第二个参数传递给 resurse 函数。

注意:use strict; 是你的 friend ;)

关于perl - 全局变量在子程序中重置自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com