答疑:能在 setter 方法中调用父类么?

答疑:能在 setter 方法中调用父类么?,第1张

概述作者:Erica Sadun,原文链接,原文日期:2016/08/08 译者:Cwift;校对:Cee;定稿:CMB k 给我留言:「能在 setter 方法调用父类么?比如在赋新值时复写 setter,而是调用其父类的方法?」 答案是当然可以。请看示例: class Foo { var value: String init(value: String) { self.value

作者:Erica Sadun,原文链接,原文日期:2016/08/08
译者:Cwift;校对:Cee;定稿:CMB

k 给我留言:「能在 setter 方法中调用父类么?比如在赋新值时复写 setter,而是调用其父类的方法?」

答案是当然可以。请看示例:

class Foo {    var value: String    init(value: String) { self.value = value }}class SubFoo: Foo {    overrIDe var value: String {        get { return super.value }        set { super.value = newValue.lowercased()        }    }}

SubFoo 类和 Foo 类的功能相似,只不过在赋值时新值会被转化成小写(虽然没有把转化 *** 作放在初始化时进行)。因此当你新建一个子类的实例并且给它赋值一个大小写混合的字符串时,子类会自动把字符串转化成小写,然后再调用父类的赋值过程。

let a = Foo(value: "Hello World")let b = SubFoo(value: "Hello World")deBUGPrint(a.value,b.value) // "Hello World","Hello World"b.value = "Hello Sailor"deBUGPrint(a.value,"hello sailor"

我不确定这个特性是否会带来非常多的应用场景,不过我认为绝对是有可能的。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。

总结

以上是内存溢出为你收集整理的答疑:能在 setter 方法中调用父类么?全部内容,希望文章能够帮你解决答疑:能在 setter 方法中调用父类么?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1072579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存