2015-11-10 18 views
8

Ho utilizzato la funzione map in Swift per eseguire iterazioni su un gruppo di sottoview e rimuoverle da una superview.Cosa significa questa sottolineatura in Swift?

self.buttons.map { $0.removeFromSuperview() } 

Quando ho aggiornato da Swift 1.x alla versione 2.0, Xcode ha dato un avvertimento che il valore restituito da mappa era inutilizzato. Così ho assegnato con let x = ... ed ho ottenuto un altro avvertimento:

enter image description here

così ho lasciato Xcode fissare l'avvertimento per me, e mi ha dato questo:

_ = self.buttons.map { $0.removeFromSuperview() }

Qual è il significato di un trattino basso quando non nel contesto di un parametro del metodo? Cosa significa?

Edit:

so che quando un parametro di metodo è anonimo, la sottolineatura prende il loro posto. Sto parlando di un trattino basso nel mezzo di un metodo. Non fa parte di un messaggio.

+1

Questa domanda ha risposto qui. http://stackoverflow.com/questions/30876068/what-is-in-swift-telling-me E qui http://stackoverflow.com/questions/24437388/whats-the-underscore-representative-of-in-swift -referenze –

+0

Ogni altra domanda relativa al trattino di sottolineatura in Swift discute il caso di un nome di metodo, in cui il trattino di sottolineatura elimina la necessità di nomi di parametri interni ed esterni. Sto vedendo il trattino basso nel mezzo di un metodo. Contestualmente, una grande differenza. – Moshe

+0

Possibile duplicato di [Che cosa significa il carattere di sottolineatura in questo caso?] (Http://stackoverflow.com/questions/32656095/what-does-the-underscore-mean-in-this-case) – Moritz

risposta

6

Un trattino basso indica il fatto che è necessario impostare una variabile, ma non si prevede di utilizzare la variabile in futuro. Invece di dargli un nome elaborato, un trattino basso sarà più semplice e meno disordinato, specialmente nel caso in cui il nome della variabile non abbia importanza. (poiché non lo usi più.)

+0

Ricorda un po 'di Python a proposito ... –

+0

Python non si preoccuperebbe che tu non stia usando un valore di ritorno e ti permetta solo di eseguire la funzione senza assegnarla a nessuna variabile. –

+0

Ho capito bene che questo (assegnando il valore dalla parte destra alla variabile di sottolineatura) fatto solo per nascondere l'avviso di compilazione? – Pavel

3

Un parametro il cui nome locale è un trattino basso viene ignorato. Il chiamante deve fornire un argomento, ma non ha un nome all'interno del corpo della funzione e non può essere indirizzato lì. È fondamentalmente un segnaposto per parametro che non si utilizzerà per nulla nel corpo.

-1

Se non sbaglio, questo è riportato da Objective-C. Quando non hai "usato" il tuo puntatore nell'app, riceverai un avviso. In Swift 2 credo che abbiano cercato di implementare qualcosa di simile.

Problemi correlati