如何使用模数运算符重置索引?

时间:2017-10-30 14:37:00

标签: arrays swift indexing modulus

我知道模数会返回除法的余数,但是当你需要重置数组索引时,我不明白它是如何工作的。

我们说我们有这个代码:

let numbers = [1, 2, 3]
let index = 0

for 1...6 {
    let item = numbers[index % numbers.count]
    print(item)
    index += 1
}

据我所知,index之前的操作等于numbers.count,它会返回索引。我也明白,当索引达到3时,数组中的项数,它将返回0(这将显示数组的第一项)。但是,我不明白在此之后它是如何继续显示数组的。

如果index为4,则执行的操作是4除以3,返回剩余的1.那么,显示的数字将是1,2,3,1,1,对吗?我的意思是,索引从未被分配回0,所以它将继续增加。

在到达数组末尾后,重置索引的模数方法如何工作?

为什么模数法比下面重置索引的方法更好?

if index >= numbers.count {
    index = 0
}

1 个答案:

答案 0 :(得分:1)

您的描述有点偏差。 {0}从{0}开始迭代,而不是1(不要将行indexfor 1...6的值混淆。

算一算。您将index从0迭代到5. index为3。

对于每个索引,结果为numbers.count

index % numbers.count