- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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
(是的,我知道 Key
和 Value
必须替换为我的特定字典的类型。这些类型是什么在这里并不重要,但是).
最佳答案
如果你正在编写一个自定义的 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/
判断这2个相似的Uris实际上相同的标准方法是什么? var a = new Uri("http://sample.com/sample/"); var b = new Uri("http://sam
这个问题在这里已经有了答案: Why does "true" == true show false in JavaScript? (5 个答案) 关闭 5 年前。 可能我很困惑,但我无法理解这个愚蠢
我是一名优秀的程序员,十分优秀!