Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 在扩展中重新声明成员隐藏原始成员*有时*.为什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_197_1@
偶然的机会,我发现你可以在没有编译器抱怨的情况下做到这一点:

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"

你能解释为什么子弹出现了现象吗?

@L_944_2@

这是有效的,因为您在与原始变量声明不同的模块中声明此扩展.

在模块中,变量名称可以重载,但在我看来这是Swift的一个缺点,因为目前没有办法明确说明你想要的模块声明.

大佬总结

以上是大佬教程为你收集整理的swift – 在扩展中重新声明成员隐藏原始成员*有时*.为什么?全部内容,希望文章能够帮你解决swift – 在扩展中重新声明成员隐藏原始成员*有时*.为什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。