Objective-C
// 遍历循环
for (NSInteger i = 0; i < 5; i++) {
NSLog(@"OC循环:%ld", i);
}
Swift
// 输出 1 2 3 4 5
for i in stride(from: 1, through: 5, by: 1) {
print("第一个:\(i)")
}
// 输出 1 2 3 4
for i in stride(from: 1, to: 5, by: 1) {
print("第二个:\(i)")
}
// 输出 1 3
for i in stride(from: 1, to: 5, by: 2) {
print("第三个:\(i)")
}
// 1 2 3 4 5
for i in 1...5 {
print("第四个:\(i)")
}
// 1 2 3 4
for i in 1..<5 {
print("第五个:\(i)")
}
stride 是 Strideable 协议中定义的一个方法, 它可以按照指定的递进值生成一个序列。可以用在 Swift 的循环语法结构中。
总结:
- 在Swift中,直接使用
for in
来实现for循环,其中stride through
生成了1到5的遍历队列,类似于range方法的...
;stride to
生成了1到4的遍历队列,类似于range方法的..<
- stride 相比 range 语法的方式会更加灵活, 我们可以指定索引递增的步长。 总体来说如果一般的顺序遍历,使用 range 语法会更加简单。 如果你的循环逻辑有特殊要求, 那么 stride 可以更好的满足。
- 注意 stride 方法返回的类型, 分别是 StrideThrough 和 StrideTo, 他们都继承自 SequenceType。 也就是说我们作用于集合类型的方法也可以应用于 stride 生成的序列