Подтвердить что ты не робот

Вызов глобальной функции, которая имеет то же имя, что и функция-член

Тип Array в Swift имеет функцию-член, называемую sort, причем ее подпись sort(isOrderedBefore: (T, T) -> Bool). Эта функция отличается от глобальной версии sort, которая имеет подпись sort(array: T[], pred: (T, T) -> Bool).

Если один расширяет Array (см. Почему тот же самый метод выходит из строя, когда внутри расширения Array в Swift?), вызывая sort изнутри области расширения Array, естественно, приведет к использованию локальной версии.

Можно ли явно вызывать функцию из внешней области или, в частности, из глобальной области, даже если ее имя совпадает с именем функции из внутренней области?

Это будет похоже на оператор разрешающей способности С++, ::

4b9b3361

Ответ 1

Крис Латтнер предлагает присвоить имя глобальной функции пространству имен по умолчанию Swift, Swift. Таким образом, вы должны иметь доступ к глобальной версии, используя: Swift.sort.

Ответ 2

Оберните глобальный sort, например,

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