Swift ha bisogno di una convenzione per dire quello che il nome di una funzione è, tra cui non solo il nome della funzione stessa (prima delle parentesi), ma anche i nomi esterni dei parametri. La convenzione è che i nomi sono seguiti da due punti. Quindi, ecco una dichiarazione di funzione (in Swift 2.0):
func myFunc(param1 param1:String, param2:String, param3:String) {}
E qui è il nome di quella funzione:
myFunc(param1:param2:param3:)
Nella vita reale, però, è possibile (anzi probabile) che uno o più parametri non esternalizzerà alcun nome. Quindi abbiamo bisogno di un segnaposto per quel nome. Il carattere di sottolineatura è quel segnaposto, proprio come il carattere di sottolineatura è il simbolo nella dichiarazione che sopprime l'esternalizzazione del nome. Quindi, ecco un altro dichiarazione di funzione (in Swift 2.0):
func myFunc2(param1:String, _ param2:String, _ param3:String) {}
E qui è il nome di quella funzione:
myFunc2(_:_:_:)
[Le specifiche Swift 2.0 è importante qui. In Swift 2.0, il primo nome param è sempre non esternalizzato per impostazione predefinita e gli altri nomi di parametro sono esternalizzati per impostazione predefinita. In Swift 1.2 e precedenti, le regole di esternalizzazione dipendevano da dove appariva la dichiarazione, che era inutilmente incoerente e confusa.]
la pena di leggere: Swift 3 ha apportato alcune modifiche alle modalità di utilizzo delle funzioni/i nomi dei parametri di metodo e le etichette di argomento e di nome. Ecco _underscores in funzioni con molta chiarezza: http://stackoverflow.com/questions/24437388/whats-the-underscore-representative-of-in-swift-references – Niraj