2017-04-17 119 views
0

經過一番研究,我一直沒能找到任何具體的確認,但似乎序列協議的Generator關聯類型已被重命名爲迭代器。它是否正確?迭代器協議與發生器vs迭代器在swift中的比較

我無法找到任何關於協議GeneratorType或關聯的類型生成器的快速API參考。我只是看到人們在博客上寫這篇文章。

所以我的問題是生成器和迭代器引用swift中完全相同的概念嗎?

+1

一句話;是。 – Hamish

+2

有點相關:[Swift 3中的NSFastEnumeration](http://stackoverflow.com/q/37829953/2976878)。另請參閱Swift 3的[進化提議](https://github.com/apple/swift-evolution/blob/master/proposals/0006-apply-api-guidelines-to-the-standard-library.md)重新標準庫。 – Hamish

+0

感謝Hamish這兩個鏈接都很有用。有這樣的感覺,就是找不到具體的確認。感謝您的安心。如果您只是以答案的形式發佈信息,我可以接受。 –

回答

2

生成器和迭代器指的是Swift中完全相同的概念嗎?

總之,是。

the evolution proposal爲標準庫的夫特3 'renamification' 表示:

  • 地帶Type從協議名稱後綴。在一些特殊情況下,這意味着添加一個Protocol後綴以避開主要[...]類型名稱的方式。

  • 生成器的概念被重命名爲所有API的迭代器。

作爲結果,GeneratorType協議已被重命名爲IteratorProtocol

SequenceType協議更名爲Sequence,和看起來像這樣去:

public protocol SequenceType { 

    associatedtype Generator : GeneratorType 

    // ... 
    func generate() -> Generator 
    // ... 
} 

來尋找這樣的:

public protocol Sequence { 

    associatedtype Iterator : IteratorProtocol 

    // ... 
    func makeIterator() -> Iterator 
    // ... 
}