2017-04-17 76 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 
    // ... 
}