Tag: 命名空间

Swift中的多功能名称空间

在Swift中,某些API(例如RxSwift)使用的技术将它们公开的代码限制在专用名称空间中。 在这篇文章中,我们将说明如何以最通用,最通用的方式完成此操作。 随时访问我的博客以阅读原始文章(语法突出显示更好) let myButton = UIButton() myButton.rx.tap.subscribe(…) // this is a RxCocoa kind of code 您是否想过在Swift中编写这样的代码行是怎么可能的? 这是.rx。 乍一看似乎很尴尬的部分,不是吗? 它的行为就像某种自定义名称空间。 这是变量吗? 这是内部阶级吗? 我们有一些线索可以弄清楚: 由于可以通过点符号访问。 它必须是UIButton类的成员 它作为tap等一些属性,因此它是一个数据结构 通过这两个线索,我们可以尝试创建自己的名称空间。 在以下示例中,我们将尝试向UIButton添加自定义名称空间,以显示单个函数hello 。 由于名称空间必须是数据结构,因此我们尝试使用Swift结构: struct ButtonNameSpace { func hello () { print (“Hello”) } } 到目前为止,一切都很好。 由于名称空间应该是UIButton的成员,因此我们将其添加为计算属性: extension UIButton { var nameSpace: ButtonNameSpace { return ButtonNameSpace() } } 现在,我们可以像这样使用它: […]