Supponiamo di avere diverse funzioni in overload in una classe:Utilizzando funzioni sovraccaricate come cittadini di prima classe
func appendToABC(string s: String) -> String {
return "ABC \(s)"
}
func appendToABC(duplicatedString s: String) -> String {
return "ABC \(s)\(s)"
}
e abbiamo alcune API che ottiene funzione come argomento:
func printString(function: (String) -> String) {
print(function("ASD"))
}
Come possiamo passare una delle funzioni appendToABC come argomento per una funzione printString?
Ho pensato di avvolgere la funzione con una chiusura, ma non un aspetto gradevole
printString { appendToABC(duplicatedString: $0) }
È possibile che le funzioni differiscano nei relativi argomenti o tipi di ritorno (http://stackoverflow.com/questions/33803888/specify-type-of-polymorphic-function-to-pass-it-as-argument). Ma non credo sia possibile se le funzioni differiscono * solo * nei nomi dei parametri esterni. –