Swift 关于Protocol扩展的静态特性
发布时间:2020-12-14 06:13:54 所属栏目:百科 来源:网络整理
导读:实验样本代码 // 声明一个协议protocol SharedString { func methodForOverride () - Void func methodWithoutOverride () - Void} // 扩展协议,实现默认实现 // 注意方法methodWithoutOverride 中调用了 methodForOverride 方法,这里有一个上写文切换的问
实验样本代码//声明一个协议
protocol SharedString {
func methodForOverride() -> Void
func methodWithoutOverride() -> Void
}
//扩展协议,实现默认实现
//注意方法methodWithoutOverride 中调用了 methodForOverride 方法,这里有一个上写文切换的问题
extension SharedString {
func methodForOverride() -> Void {
print("??")
}
func methodWithoutOverride() -> Void {
print("??")
methodForOverride()
print("??")
}
}
//在String类的扩展中遵守并实现协议
extension String:SharedString {
func methodForOverride() -> Void {
print(self)
}
}
//创建字符串并切换上下文到SharedString协议
let Shared:SharedString = "hello"
Shared.methodForOverride()
Shared.methodWithoutOverride()
变换不同代码得到的执行结果总结
重写协议扩展中定义的方法,协议扩展的静态特性保留了方法的原版盒被重写版本,你可以通过切换上下文获得不同的版本,同时对于没有重写的方法,可以保证其不变性。 我们可以遵循一个原则,把那些希望被重写的方法定义在协议中,那些不希望被复写的方法的定义和实现放在协议扩展中。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |