【发布时间】:2015-01-11 03:54:47
【问题描述】:
在 Swift 中,我正在编写一个自定义的 SequenceType 和一个非常简单的 generate() 实现:
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
(是的,我知道 Key 和 Value 必须替换为我的特定字典的类型。但是,这些类型在这里并不重要)。
【问题讨论】:
标签: swift protocols typeof idioms type-alias