调用与成员函数同名的全局函数

Cez*_*zar 23 swift

ArraySwift中的类型有一个名为的成员函数sort,其签名为sort(isOrderedBefore: (T, T) -> Bool).此功能与sort具有签名的全局版本不同sort(array: T[], pred: (T, T) -> Bool).

如果扩展一个Array(请参阅为什么在Swift中的Array扩展内部时同一方法失败?),sort从Array扩展范围内调用自然会导致使用本地版本.

是否可以从外部作用域显式调用函数,或者特别是从全局作用域调用函数,即使它的名称与内部作用域的函数名称一致?

这类似于C++作用域解析运算符, ::

Yaw*_*war 35

Chris Lattner建议使用Swift的默认命名空间来限定全局函数的名称Swift.因此,您应该能够使用以下方式访问全局版本:Swift.sort.

  • @AlexBrown如果您的目标名称是"MyApp",您可以使用MyApp.theGlobalFunction()调用全局函数.我与Alamofire的全局功能有类似的冲突(针对iOS7你不能使用嵌入式框架,因此lib不是命名空间) (6认同)