Swift學習——forin遍歷對數組操做

        在Swift中,數組能夠在forin循環進行刪除而不崩潰。這是跟OC很不同的一個地方。git

        運行以下代碼github

//定義一個Array的數組
var numbers: Array = [1, 2, 3, 4, 5]
    
for _ in numbers {
    numbers.removeLast()
}
複製代碼

        咱們會發現,程序並不會崩潰。這是由於在Swift中的forin循環(array, set, or any other collection or sequence)是在它的迭代器進行循環的,上面的代碼可轉化成以下代碼(官方源碼查看):swift

var numbers: Array = [1, 2, 3, 4, 5]
var numbersIterator = numbers.makeIterator()
while let num = numbersIterator.next() {
    numbers.removeLast()//此處刪除numbers的時候,numbersIterator並不會受到影響。
}
複製代碼

        另外,我也試了一下,NSMutableArray(繼承sequence協議)在Swift中也是不會崩潰的,在forin循環中,它們都會先生成這種類型的迭代器(結構體),而後在迭代器裏循環,循環過程當中對它們進行操做並不會影響生成的迭代器的值。數組

相關文章
相關標籤/搜索