gpt4 book ai didi

cocoa - Swift 的 GeneratorOf 疯狂初始化

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:48 24 4
gpt4 key购买 nike

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>
}

我不明白的是第二个init:

init<G : Generator where T == T>(_ self_: G)

到底为什么有必要声明 T == T??

(_ self_: G) 是什么意思??

谢天谢地,Swift 的主要优势之一是语法比 Objective C 简单得多......:-P

最佳答案

这是 Swift stdlib header 自动生成器中的一个错误。在解析类型时,它们会在某些不应该替换的地方替换等效类型。这里的实际定义应该是:

init<G : Generator where Generator.Element == T>(_ self_: G)

但由于 Generator.ElementT 相同,该工具将替换它。 Apple 一直在努力解决这个问题。

(_ self_: G) 是标准语法,尽管这是一种公认​​的不寻常的风格,我还没有在其他地方看到过这种风格,除了在 SequenceOf 中,它可能是这样写的由同一个人。我怀疑这只是开发人员命名变量的方式,而不是具有更深层次的含义。

请记住,stdlib header 不是“普通” header 。 Swift 没有 header 。 Apple 采取了一种特殊的 Apple 独有的技巧来允许一个。

Chris Lattner commented on this in the devforms.

关于cocoa - Swift 的 GeneratorOf<T> 疯狂初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25807157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com