我知道模数会返回除法的余数,但是当你需要重置数组索引时,我不明白它是如何工作的。
我们说我们有这个代码:
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
}
答案 0 :(得分:1)
您的描述有点偏差。 {0}从{0}开始迭代,而不是1(不要将行index
与for 1...6
的值混淆。
算一算。您将index
从0迭代到5. index
为3。
对于每个索引,结果为numbers.count
。
index % numbers.count