我看到这些可以互换使用。有什么区别?
答案 0 :(得分:38)
没有区别。来自perldoc perlsyn:
foreach
关键字实际上是for
关键字的同义词,因此您可以使用foreach
表示可读性,或for
表示简洁。
答案 1 :(得分:15)
我看到这些可以互换使用。
除语法之外没有区别。
答案 2 :(得分:6)
四个字母。
他们功能相同,只是拼写不同。
答案 3 :(得分:4)
自{{}}}以来,foreach
与for
同义。这是对C shell的introduction in perl-2.0命令的点头。
在我自己的代码中,在极少数情况下,我使用的是C风格的for循环,我写了
for (my $i = 0; $i < $n; ++$i)
但是为了迭代一个数组,我拼出
foreach my $x (@a)
我发现它在我脑海中读得更好。
答案 4 :(得分:2)
来自http://perldoc.perl.org/perlsyn.html#Foreach-Loops
foreach关键字实际上是for关键字的同义词,所以你 也可以使用。如果省略VAR,则为每个值设置$ _。
# Perl's C-style
for (;;) {
# do something
}
for my $j (@array) {
print $j;
}
foreach my $j (@array) {
print $j;
}
然而:
如果LIST的任何部分是一个数组,如果你,foreach将会非常困惑 添加或删除循环体内的元素,例如使用拼接。 所以不要这样做。
答案 5 :(得分:1)
foreach关键字实际上是for关键字的同义词,因此您可以将foreach用于可读性或简洁性。 (或者因为Bourne shell比csh更熟悉,所以写作更自然。)如果省略VAR,则为每个值设置$ _。
答案 6 :(得分:-2)
有一个微妙的区别(http://perldoc.perl.org/perlsyn.html#Foreach-Loops):
foreach循环遍历正常列表值并依次将变量VAR设置为列表的每个元素。如果变量前面带有关键字my,则它是词法范围的,因此仅在循环中可见。否则,该变量隐含在循环的本地,并在退出循环时重新获得其前一个值。如果先前使用my声明了变量,它将使用该变量而不是全局变量,但它仍然本地化为循环。这种隐式定位仅在foreach循环中发生。
这个程序:
#!/usr/bin/perl -w
use strict;
my $var = 1;
for ($var=10;$var<=10;$var++) {
print $var."\n"; # print 10
foo(); # print 10
}
print $var."\n"; # print 11
foreach $var(100) {
print $var."\n"; # print 100
foo(); # print 11 !
}
sub foo {
print $var."\n";
}
将产生:
10
10
11
100
11
答案 7 :(得分:-3)
如果是“for”,您可以使用这三个步骤。
1)初始化 2)状态检查 3)递增或递减
但是在“foreach”的情况下,你无法增加或减少该值。它总是将增量值设为1.