偶然的机会,我发现你可以在没有编译器抱怨的情况下做到这一点:
extension Date { var timeIntervalSinceNow: TimeInterval { return 1000 } }
更奇怪的是,这实际上是评估为1000:
Date().timeIntervalSinceNow
>扩展似乎隐藏了原始成员.
所以我试着用我自己的班级做到这一点:
class A { var a: String { return "A" } } extension A { var a: String { return "a" } }
>并且无法编译:“无效重新声明’a’”.
我观察到这不会影响原始成员通过协议的使用,这是隐藏的预期行为:
extension Date { var description: String { return "XXXX" } } let date: customstringconvertible = Date() date.description // normal date Date().description // "XXXX"
你能解释为什么子弹出现了现象吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。