gpt4 book ai didi

perl - C 样式循环与 Perl 循环(在 Perl 中)

转载 作者:行者123 更新时间:2023-12-04 22:04:53 25 4
gpt4 key购买 nike

我觉得我对 perl 的循环机制不了解。

我的理解是

for my $j (0 .. $#arr){...} 

在功能上等同于:
for(my $i=0; $i<=$#arr; $i++){..}

但是,在我的代码中,它们的操作方式似乎略有不同。具体来说,他们决定何时终止的时间。例如:

假设 @arr 是用一个变量初始化的。

这两个块应该做同样的事情吧?
for my $i (0 .. $#arr)
{
if(some condition that happens to be true)
{
push(@arr, $value);
}
}


for (my $i=0; $i<=$#arr; $i++)
{
if(some condition that happens to be true)
{
push(@arr, $value);
}
}

然而,在执行过程中,即使在两种情况下都推送了一个新值,第一个循环将在仅一次迭代后停止。

这是应该发生的吗?如果是为什么?

编辑: 感谢您的所有回答,我知道我可以用其他循环机制完成同样的事情。当我问是否有另一种语法时,我专门谈论使用 for。显然没有。因为用 c 风格已经实现了做我想做的语法。我只是问,因为有人告诉我避免使用 c 风格,但我仍然喜欢我的 for 循环。

最佳答案

$i<=$#arr 在每个循环之前被评估,而 (0 .. $#arr) 在任何循环之前被评估一次。

因此,第一个代码不会“看到”@arr 大小的变化。

关于perl - C 样式循环与 Perl 循环(在 Perl 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23348505/

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