For loop Swift 3-区分;“用于循环”;

For loop Swift 3-区分;“用于循环”;,for-loop,swift3,For Loop,Swift3,我试图找出以下两者之间的区别: for i in A { 及 与其他一些语言不同,Swift只有一个for循环。Swift的for循环迭代一个序列,并提供(在循环变量中,i)该序列的每个元素 在第一个示例中,序列是A,数组本身,这意味着i是数组的一个元素: var A = [ "Mal", "Wash", "Kaylee" ] for i in A { print(i) // prints "Mal" on the first pass, then "Wash", then "Kayl

我试图找出以下两者之间的区别:

for i in A {


与其他一些语言不同,Swift只有一个
for
循环。Swift的for循环迭代一个
序列
,并提供(在循环变量中,
i
)该序列的每个元素

在第一个示例中,序列是
A
,数组本身,这意味着
i
是数组的一个元素:

var A = [ "Mal", "Wash", "Kaylee" ]
for i in A {
    print(i) // prints "Mal" on the first pass, then "Wash", then "Kaylee"
}
在第二个示例中,序列是整数的
范围
,从零开始,到小于数组大小的1结束。所以
i
是一个整数:

for i in 0..<A.count {
    print(i) // prints "0", then "1", then "2"
}

您的第一个循环示例与第三个示例可以互换吗?这两个代码片段具有相同的效果,是的。通常,这两种形式是否可互换取决于您可能在循环体中尝试执行的其他操作。如果您只是将变量与数组中的元素进行比较,而不考虑索引,那么它们是可互换的?是-
对于数组中的元素{/*read element*/}
对于0中的索引。。
for i in 0..<A.count {
    print(i) // prints "0", then "1", then "2"
}
for i in 0..<A.count {
    print(A[i]) // prints "Mal", then "Wash", then "Kaylee"
}
for i in 0..<A.count {
    if A[i] == "Wash" {
        A.insert("Zoe", at: i + 1)
    }
}
for (index, element) in A.enumerated() {
    print(index, element) // prints "0 Mal", "1 Wash", "2 Kaylee"
}