programacion - tipos de datos en swift
Llamar a una función global que tiene el mismo nombre que una función miembro (2)
El tipo de Array
en Swift tiene una función miembro llamada sort
, con su firma sort(isOrderedBefore: (T, T) -> Bool)
. Esta función difiere de la versión global de sort
, que tiene la sort(array: T[], pred: (T, T) -> Bool)
firma sort(array: T[], pred: (T, T) -> Bool)
.
Si uno extiende un Array
(vea ¿Por qué falla el mismo método cuando está dentro de una extensión de Array en Swift? ), Llamar al sort
desde dentro del alcance de la extensión de Array
naturalmente resultará en el uso de la versión local.
¿Es posible llamar explícitamente a una función desde un alcance externo, o específicamente desde un alcance global, incluso si su nombre coincide con el de una función desde un alcance interno?
Esto sería similar al operador de resolución de alcance C ++, ::
Envuelve el sort
global, por ejemplo,
func my_sort<T>(arr: T[], pred: (T, T) -> Bool) -> T[] {
return sort(arr, pred)
}
Chris Lattner sugiere calificar el nombre de la función global con el espacio de nombres predeterminado de Swift
, Swift
. Por lo tanto, debería poder acceder a la versión global utilizando: Swift.sort
.