1 perl
我有一个perl范围问题.
use strict;
use warnings;
our @cycles = (0,1,2,3,4);
foreach my $cycle (@cycles){
my $nextcycle = 0;
foreach $nextcycle (@cycles){
if ($cycle+1 == $nextcycle){
print "found cycle+1, $nextcycle\n";
last;
}
}
print "current=$cycle, nextcycle=$nextcycle\n";
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出:
发现周期+ 1,1
current = 0,nextcycle = 0
发现周期+ 1,2
current = 1,nextcycle = 0
发现周期+ 1,3
current = 2,nextcycle = 0
发现周期+ 1,4
current = 3,nextcycle = 0
current = 4,nextcycle = 0
我期待这个:
发现周期+ 1,1
current = 0,nextcycle = 1
发现周期+ 1,2
current = 1,nextcycle = 2
发现周期+ 1,3
current = 2,nextcycle = 3
发现周期+ 1,4
current = 3,nextcycle = 4
current = 4,nextcycle = 0
我进一步修改了循环看起来像这样,得到了我想要的东西:
use strict;
use warnings;
our @cycles = (0,1,2,3,4);
foreach my $cycle (@cycles){
my $nextcycle = 0;
foreach my $tempcycle (@cycles){
if ($cycle+1 == $tempcycle){
$nextcycle = $tempcycle;
print "found cycle+1, $nextcycle\n";
last;
}
}
print "current=$cycle, nextcycle=$nextcycle\n";
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么第一个循环不起作用!
foreach循环遍历正常列表值,并依次将变量VAR设置为列表的每个元素.如果变量前面带有关键字my,则它是词法范围的,因此仅在循环中可见.否则,该变量隐含在循环的本地,并在退出循环时重新获得其前一个值.
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |