大佬教程收集整理的这篇文章主要介绍了swift3 – fileprivate和私有扩展之间的区别?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道fileprivate访问级别修饰符限制使用函数/属性来源文件声明它和私有 – 限于声明的词法范围.但似乎这条规则不适用于扩展.例如.此代码有效:
class Foo { } fileprivate extension Foo { var aa: Int { return aaa + 10 } } private extension Foo { var aaa: Int { return 20 } }
有人可以帮我弄清楚它们之间的区别吗?谢谢.
Swift 4.0
private现在可以在扩展名中访问,但在同一个文件中.如果您在其他文件中声明/定义扩展名,则扩展程序将无法访问您的私有变量.
fileprivate可在同一文件中访问.
对于生活在顶层(在类型定义之外)的东西,private和fileprivate完全相同.所以当你写作
fileprivate extension Foo { var aa: Int { return aaa + 10 } } private extension Foo { var aaa: Int { return 20 } }
你真的写了
fileprivate extension Foo { var aa: Int { return aaa + 10 } } fileprivate extension Foo { var aaa: Int { return 20 } }
最终,同一协议上的两个扩展由编译器解析为单个扩展.
fileprivate extension Foo { var aa: Int { return aaa + 10 } var aaa: Int { return 20 } }
如果您认为有两个像这样的关键字是stupid,一些Swift架构师agree with you.我相信一些样式指南建议您只使用公共和私有访问修饰符(以及内部修饰符,但默认情况下那个),因为,通常,基于每个文件限制事物,而不是基于每个模块或每个类型限制事物并不是特别有用.
如果必须使用fileprivate修饰符,则永远不要在类型范围之外使用private修饰符.这令人困惑(因为在该上下文中的私有“真的”意味着fileprivate)并使您的代码更难阅读.
以上是大佬教程为你收集整理的swift3 – fileprivate和私有扩展之间的区别?全部内容,希望文章能够帮你解决swift3 – fileprivate和私有扩展之间的区别?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。