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 ++作用域解析运算符::
答案 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)
}