Swe*_*per 5 member-hiding swift
偶然地,我发现您可以在没有编译器抱怨的情况下执行此操作:
extension Date {
var timeIntervalSinceNow: TimeInterval {
return 1000
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这实际上评估为1000:
Date().timeIntervalSinceNow
Run Code Online (Sandbox Code Playgroud)
因此,我尝试在自己的课堂上这样做:
class A {
var a: String {
return "A"
}
}
extension A {
var a: String {
return "a"
}
}
Run Code Online (Sandbox Code Playgroud)
我观察到这不会通过协议影响原始成员的使用,这是预期的隐藏行为:
extension Date {
var description: String {
return "XXXX"
}
}
let date: CustomStringConvertible = Date()
date.description // normal date
Date().description // "XXXX"
Run Code Online (Sandbox Code Playgroud)
您能解释为什么会出现子弹头现象吗?
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |