Swift For-in循环

示例

换的循环可以让你迭代任何序列。

遍历一个范围

您可以遍历半开和封闭范围:

for i in 0..<3 {
    print(i)
}

for i in 0...2 {
    print(i)
}

// 都打印:
// 0
// 1个个
// 2

遍历数组或集合

let names = ["James", "Emily", "Miles"]

for name in names {
   print(name)
}

// 詹姆士
// 艾米莉
// 迈尔斯

2.1 2.2

如果需要数组中每个元素的索引,则可以使用enumerate()on方法SequenceType。

for (index, name) in names.enumerate() {
   print("The index of \(name) is \(index).")
}

// 詹姆斯的索引是0。
// 艾米丽的指数是1。
// 英里的索引是2。

enumerate()返回一个包含Int从0开始的连续s元素对的惰性序列。因此,对于数组,这些数字将对应于每个元素的给定索引-但是,其他类型的集合可能不是这种情况。

3.0

在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 岁。

反向迭代

2.1 2.2

您可以使用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)
}

// 迈尔斯
// 艾米莉
// 詹姆士
3.0

在Swift 3中,reverse()已重命名为reversed():

for i in (0..<3).reversed() {
    print(i)
}

使用自定义步幅迭代范围

2.1 2.2

通过使用上的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
1.2 3.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)
}