2015-05-21 32 views
24

Sto cercando di implementare del codice da parse.com e noto una parola chiave in dopo il vuoto.Swift `in` keyword significato?

Sono perplesso di cosa si tratta? La seconda linea si vedono i Void in

PFUser.logInWithUsernameInBackground("myname", password:"mypass") { 
    (user: PFUser?, error: NSError?) -> Void in 
    if user != nil { 
    // Do stuff after successful login. 
    } else { 
    // The login failed. Check error to see why. 
    } 
} 

I documenti non documentano questo. So che la parola chiave in viene utilizzata nei loop for.

Chiunque conferma?

+2

prima che la "in" è la firma della chiusura. Dopo l'in è il corpo della chiusura. –

+0

http://www.apeth.com/swiftBook/ch02.html#_anonymous_functions – matt

risposta

49

In una funzione denominata, dichiariamo i parametri e il tipo di ritorno nella riga di dichiarazione func.

func say(s:String)->() { 
    // body 
} 

In una funzione anonima, non c'è una linea func dichiarazione - è anonimo! Quindi lo facciamo con una riga in all'inizio del corpo.

{ 
    (s:String)->() in 
    // body 
} 

(cioè i piena forma di una funzione anonima. Ma poi Swift ha una serie di regole che permettono il tipo di ritorno, i tipi di parametri, e anche i nomi dei parametri e l'intera linea in essere omessa . in determinate circostanze)

+0

Grazie Matt, non posso credere di averlo perso. Grazie per segnalarlo. – Martin