我觉得有一些我没有得到关于perl的循环机制。C风格的循环vs Perl循环(在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风格,但我仍然喜欢我的循环。
有另一种机制,我可以使用(除了c风格),每次迭代后评估? – LukeP
相关:http://stackoverflow.com/questions/23175022/what-am-i-not-getting-about-foreach-loops – mob
是的,绝对相关,但不是重复。另一个人没有意识到使用foreach时,$ _变量指的是实际的字符串而不是索引。我的问题是不同的。 – LukeP