¿Hay alguna manera de llamar a una function global dentro de una class que tenga un método cuyo nombre sea el mismo que la function global?

El código siguiente da un error porque intenta llamar al método de la class en lugar de a una function global:

func a(i: Int) -> Int { return i + 10 } class B { func a(s: String) -> String { return s + "bbb" } func b() { print(a(100)) // Error (Cannot convert value of type 'Int' to expected argument type 'String') } } 

Sí, lo hay. Si el nombre de la aplicación fuera, por ejemplo, "myApp", entonces podría llamar a la function global, que tiene el mismo nombre y número de argumento que la de su class B , así:

 func b() { print(myApp.a(100)) } 

Mi sugerencia es mantener sus funciones globales en una class como esta:

 class Global { static func a(i: Int) -> Int { return i + 10 } } class B { func a(s: String) -> String { return s + "bbb" } func b() { print(Global.a(100)) } } 

De esta manera, su código es más legible y less confuso para el comstackdor.