Kle*_*oke 2 swift swift-extensions
我在 swift 扩展中有一个问题:
protocol Racer {
var speed: Double { get }
}
extension Sequence where Iterator.Element == Racer {
func fastest() -> Iterator.Element? {
return self.max(by: { (a: Iterator.Element, b: Iterator.Element) -> Bool in
return a.speed < b.speed
})
}
}
extension Sequence where Iterator.Element: Racer {
func bla() -> Void {
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道它们之间有什么区别。实际上,类型的数组[Racer]没有bla()功能。
编辑1?还有一个问题,假设我们有一个结构体符合Racer
struct Human: Racer {
var speed: Double
}
Run Code Online (Sandbox Code Playgroud)
如果我们有一个Array<Racer>:
let me = Human(speed: 99999)
let you = Human(speed: 99998)
let arr: [Racer] = [me, you]
// Threre's no problem, we can do this
arr.fastest()
// but
let arr2: [Human] = [me, you]
// this Array won't have the `fastest` function
arr2.fastest() ------> Error!
Run Code Online (Sandbox Code Playgroud)
所以,我不得不延长两==和:在同一时间对同一功能?
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |