该换的循环可以让你迭代任何序列。
您可以遍历半开和封闭范围:
for i in 0..<3 {
print(i)
}
for i in 0...2 {
print(i)
}
// 都打印:
// 0
// 1个个
// 2let names = ["James", "Emily", "Miles"]
for name in names {
print(name)
}
// 詹姆士
// 艾米莉
// 迈尔斯如果需要数组中每个元素的索引,则可以使用enumerate()on方法SequenceType。
for (index, name) in names.enumerate() {
print("The index of \(name) is \(index).")
}
// 詹姆斯的索引是0。
// 艾米丽的指数是1。
// 英里的索引是2。enumerate()返回一个包含Int从0开始的连续s元素对的惰性序列。因此,对于数组,这些数字将对应于每个元素的给定索引-但是,其他类型的集合可能不是这种情况。
在Swift 3中,enumerate()已重命名为enumerated():
for (index, name) in names.enumerated() {
print("The index of \(name) is \(index).")
}let ages = ["James": 29, "Emily": 24]
for (name, age) in ages {
print(name, "is", age, "岁。")
}
// 艾米莉 is 24 岁。
// 詹姆士 is 29 岁。您可以使用reverse()on方法SequenceType来反向迭代任何序列:
for i in (0..<3).reverse() {
print(i)
}
for i in (0...2).reverse() {
print(i)
}
// 都打印:
// 2
// 1个个
// 0
let names = ["James", "Emily", "Miles"]
for name in names.reverse() {
print(name)
}
// 迈尔斯
// 艾米莉
// 詹姆士在Swift 3中,reverse()已重命名为reversed():
for i in (0..<3).reversed() {
print(i)
}通过使用上的stride(_:_:)方法,Strideable您可以使用自定义跨度在范围内进行迭代:
for i in 4.stride(to: 0, by: -2) {
print(i)
}
// 4
// 2
for i in 4.stride(through: 0, by: -2) {
print(i)
}
// 4
// 2
// 0在Swift 3中,上的stride(_:_:)方法Stridable已被全局stride(_:_:_:)函数取代:
for i in stride(from: 4, to: 0, by: -2) {
print(i)
}
for i in stride(from: 4, through: 0, by: -2) {
print(i)
}