我有一个Perl循环
<TouchableOpacity onPress={()=>this._fetchCreateNewPost()}>
<Text style={styles.acceptBtn}>✓</Text>
</TouchableOpacity>
我不知道为什么,而不是打印出来 4 5 6 7 8 9 10 全部放在控制台的单独一行上,它只打印5 5 5然后终止
答案 0 :(得分:1)
Perl使用分号分隔for循环的参数。
尝试一下:
my $i = 0;
for ($i = 4; $i < 11; $i++) {
print "$i\n";
}
答案 1 :(得分:1)
Perl有两种类型的for
循环,classic C style version(for (INIT; COND; STEP)
)和list iteration version(for VAR (LIST)
)。
您试图使用第一种形式,但是您的代码不包含;
,因此Perl将其解析为第二种形式;也就是说,它正在尝试遍历列表$i = 4, $i < 11, $i++
的元素,该列表的结果为4, 1, 4
并将$i
设置为5
。
详细信息:$i = 4
的计算结果为4
,并将$i
设置为4
作为副作用。 $i < 11
将$i
(当前为4
)的值与11
进行比较,其结果为1
(真)。 $i++
评估$i
(4
)的当前值,并增加$i
作为副作用,将其设置为5
。
您未指定循环变量,因此Perl默认使用$_
。
但是,循环体根本不使用$_
,而在每次迭代中仅打印$i
的最终值,即5
。如果您改为打印$_
,将会看到更好的结果:
for ($i = 4, $i < 11, $i++) {
print "$_\n";
}
输出:
4
1
4
要获得所需的结果,请编写for ($i = 4; $i < 11; $i++)
或将其完全转换为列表迭代变体:
for my $i (4 .. 10) {
print "$i\n";
}