大佬教程收集整理的这篇文章主要介绍了Swift:将协议变量实现为惰性变量?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
protocol Foo { var foo: String { get } } struct Bar: Foo { lazy var foo: String = "Hello World" }
编译器抱怨Type’Bar’不符合协议’Foo’.@H_874_18@
也不可能在协议声明中添加lazy关键字,因为在协议要求错误上不允许“懒惰”.@H_874_18@
这根本不可能吗?@H_874_18@
即,该值在首次使用时发生变异.由于foo已经在Foo协议中被蓝图打印为get,隐式非变换get,因此值类型Bar不会使用其惰性属性foo(具有变异getter的属性)来实现此承诺.@H_874_18@
将Bar更改为引用类型将允许它实现Foo蓝图(因为改变引用类型的属性不会改变类型实例本身):@H_874_18@
protocol Foo { var foo: String { get } } class Bar: Foo { lazy var foo: String = "Hello World" }
另外,在Foo的foo属性的蓝图中指定它有一个变异的getter.@H_874_18@
protocol Foo { var foo: String { mutaTing get } } struct Bar: Foo { lazy var foo: String = "Hello World" }
有关getter和setter的mutaTing / nonmutaTing说明符的一些其他详细信息,请参阅以下Q& A:@H_874_18@
> Swift mutable set in property@H_874_18@
以上是大佬教程为你收集整理的Swift:将协议变量实现为惰性变量?全部内容,希望文章能够帮你解决Swift:将协议变量实现为惰性变量?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。