GeneratorOf创建一个通用Generator(和Sequence):
struct GeneratorOf<T> : Generator, Sequence {
init(_ next: () -> T?)
init<G : Generator where T == T>(_ self_: G)
func next() -> T?
func generate() -> GeneratorOf<T>
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是第二个init:
init<G : Generator where T == T>(_ self_: G)
Run Code Online (Sandbox Code Playgroud)
为什么在地球上有必要陈述T == T?
这(_ self_: G)应该是什么意思?
谢天谢地,Swift的一个主要优点是比Objective C ...:-P简单得多的语法
这是Swift stdlib头自动生成器中的一个错误.在解析类型时,它们会在某些不应该替换的类型中替换它们.这里的实际定义应该是:
init<G : Generator where Generator.Element == T>(_ self_: G)
Run Code Online (Sandbox Code Playgroud)
但由于Generator.Element是相同的T,该工具取代了它.Apple一直在努力解决这个问题.
(_ self_: G)是标准的语法,虽然这是我在其他地方没有看过的不同寻常的风格,除了in SequenceOf,这可能是由同一个人写的.我怀疑这只是开发人员如何命名变量,而不是具有更深层含义.
请记住,stdlib标头不是"普通"标头.Swift没有标题.苹果公司做了一个特殊的Apple技巧,允许一个.
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |