gpt4 book ai didi

Swift —— 等同于 typealias 中的 typeof 的惯用语

转载 作者:行者123 更新时间:2023-11-28 05:31:33 24 4
gpt4 key购买 nike

在 Swift 中,我使用非常简单的 generate() 实现编写自定义 SequenceType:

func generate() -> Generator {
return elements.keys.generate()
}

但是,Generator 不是一个实际的类型——它只是指一个 typealias,我必须在我的类型的其他地方手动指定它。

点开Dictionary相关的声明,elements.keys.generate()的类型似乎很复杂,几乎是编译器的一个实现细节。我觉得定义我的类型别名的最简洁的方法是

typealias Generator = typeof(elements.keys.generate())

但是,Swift 显然没有typeof 指令。有没有比使用以下丑陋且稍微脆弱的代码更简洁的方法来编写我的 typealias

typealias Generator = LazyBidirectionalCollection<MapCollectionView<[Key : Value], Key>>.Generator

(是的,我知道 KeyValue 必须替换为我的特定字典的类型。这些类型是什么在这里并不重要,但是).

最佳答案

如果你正在编写一个自定义的 SequenceType 持有 Element 类型的元素,你可以像这样编写你的生成器:

 public func generate () -> AnyGenerator<Element> {
var generator = objs.keys.generate()
return AnyGenerator {
return generator.next ()
}
}

因为上面的代码是在你的SequenceType范围内实现的,所以Element类型是众所周知的。您不必从 objs.keys.generate() 中“推断”类型,您只需将其用作 Element

关于Swift —— 等同于 typealias 中的 typeof 的惯用语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27883788/

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