迭代器中的迭代器协议与发生器与迭代器的比较

时间:2017-04-17 22:10:12

标签: swift iterator generator

在做了一些研究之后,我还没有找到任何具体的确认,但似乎序列协议的Generator关联类型已经重命名为迭代器。这是对的吗?

我无法在有关协议GeneratorType或关联类型Generator的swift API参考资料中找到任何内容。我只是看到人们在博客上写下它。

所以我的问题是生成器和迭代器在swift中引用完全相同的概念吗?

1 个答案:

答案 0 :(得分:2)

  

生成器和迭代器是否在Swift中引用完全相同的概念?

总之;是

正如the evolution proposal中提到的Swift 3' reamification'标准库:

  
      
  • 从协议名称中删除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
  // ...
}