Perl - 循环变量问题
Perl - Trouble With Loop Variables
我对 Perl 编码还很陌生,习惯使用 C 风格的 for 循环。我不确定为什么以下程序永远不会为 $l:
打印值 4
use strict;
use warnings;
my $minL = 4;
for (my $l = $minL; $l > 0; $l--) {
for (my $i = 0; $i + $l < $minL; $i++) {
print "$i $l\n";
}
}
非常感谢。
您的内部 for
循环具有条件 $i + $l < $minL
。如果 $l == $minL
,那么即使 $i
为 0,$i + $l < $minL
也将为假,因此循环运行 0 次并且从不打印任何内容。
也许您想使用 <=
作为条件?
顺便说一下,下面是如何使用 Perl 风格的 foreach 循环编写相同的东西(假设 <=
条件):
my $minL = 4;
for my $l (reverse 1 .. $minL) {
for my $i (0 .. $minL - $l) {
print "$i $l\n";
}
}
在第一次迭代中:
for (my $l = $minL; $l > 0; $l--) {
$l == $minL
for (my $i = 0; $i + $l < $minL; $i++) {
所以这个块不会 运行 直到 $l 递减:
print "$i $l\n";
}
将您的内部循环更改为:
for (my $i = 0; $i + $l <= $minL; $i++) {
我对 Perl 编码还很陌生,习惯使用 C 风格的 for 循环。我不确定为什么以下程序永远不会为 $l:
打印值 4use strict;
use warnings;
my $minL = 4;
for (my $l = $minL; $l > 0; $l--) {
for (my $i = 0; $i + $l < $minL; $i++) {
print "$i $l\n";
}
}
非常感谢。
您的内部 for
循环具有条件 $i + $l < $minL
。如果 $l == $minL
,那么即使 $i
为 0,$i + $l < $minL
也将为假,因此循环运行 0 次并且从不打印任何内容。
也许您想使用 <=
作为条件?
顺便说一下,下面是如何使用 Perl 风格的 foreach 循环编写相同的东西(假设 <=
条件):
my $minL = 4;
for my $l (reverse 1 .. $minL) {
for my $i (0 .. $minL - $l) {
print "$i $l\n";
}
}
在第一次迭代中:
for (my $l = $minL; $l > 0; $l--) {
$l == $minL
for (my $i = 0; $i + $l < $minL; $i++) {
所以这个块不会 运行 直到 $l 递减:
print "$i $l\n";
}
将您的内部循环更改为:
for (my $i = 0; $i + $l <= $minL; $i++) {