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

时间:2014-06-05 02:00:11

标签: swift

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

如果扩展Array(请参阅Why does the same method fail when inside an Array extension in Swift?),则从sort扩展名范围内调用Array自然会导致使用本地版本。< / p>

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

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

2 个答案:

答案 0 :(得分:33)

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

答案 1 :(得分:0)

包裹全局sort,例如,

func my_sort<T>(arr: T[], pred: (T, T) -> Bool) -> T[] {
    return sort(arr, pred)
}