如何使for循环每次递增1

时间:2018-11-09 23:21:00

标签: perl for-loop

我有一个Perl循环

<TouchableOpacity onPress={()=>this._fetchCreateNewPost()}>
  <Text style={styles.acceptBtn}>✓</Text>
</TouchableOpacity>

我不知道为什么,而不是打印出来 4 5 6 7 8 9 10 全部放在控制台的单独一行上,它只打印5 5 5然后终止

2 个答案:

答案 0 :(得分:1)

Perl使用分号分隔for循环的参数。

尝试一下:

my $i = 0;
for ($i = 4; $i < 11; $i++) {
    print "$i\n";
}

答案 1 :(得分:1)

Perl有两种​​类型的for循环,classic C style versionfor (INIT; COND; STEP))和list iteration versionfor 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++评估$i4)的当前值,并增加$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";
}