
上QQ阅读APP看书,第一时间看更新
4.1.4 跳过范围内的值
遍历一系列数字时,可以使用until()跳过该范围内的最后一个值。与..不同,until()方法将在最后一个值前停止。就像downTo()方法一样,我们也可以在使用until()方法时去掉点和圆括号。让我们试一下:

使用until()创建的迭代不包括最后一个值5,而我们之前使用..创建的范围会包括。
在类似C的语言的传统for循环中,例如,可以通过使用i=i+3跳过一些值,但是这改变了i,在Kotlin中是不允许的。为了在迭代过程中跳过一些值,Kotlin提供了step()方法——这就流畅性和减少错误而言无疑是朝着正确方向迈出了一步。让我们使用step()方法,并再次使用中缀表示法来保证流畅性:

step()方法将使用..、until、downTo等创建的IntRange或IntProgression转换为跳过某些值的IntProgression。让我们使用step()来反向迭代,同时跳过一些值:

这是一种简单的方法,可以规则地跳过一些值。还有其他方法可以不规则地跳过一些值。例如,如果想遍历所有可被3和5整除的值,可以使用filter()方法:

filter()方法接受一个断言(一个lambda表达式)作为参数。稍后我们将讨论lambda和函数式风格。
到目前为止,你已经看到了基础的对一系列值的迭代。接下来,让我们看看对一组值的遍历。