我覺得有一些我沒有得到關於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