2014-06-17 7 views
16

fand ich einige Code in Swift geschrieben auf github,Was bedeuten "_" und "in" in Swift Programmiersprache?

Und ein wenig verwirrt über diese Linie erhalten

var done: (NSError?, NSData, NSString?) ->() = { (_, _, _) ->() in } 

könnten Sie bitte die wirkliche Bedeutung dieser Linie erklären? Vielen Dank!

+0

Die Zeile mit 'in' gibt die Signatur des Abschlusses an. Es ermöglicht Ihnen, die Parameter der Eingänge zu benennen und auch den Rückgabewert der Ausgabe anzugeben. – Jack

Antwort

13

_ bedeutet, das Ding nicht zu nennen. Es kann an einer Reihe von Orten verwendet werden. In Ihrem Fall heißt es, ignorieren Sie die Variable in die Schließung übergeben. Der Code, den Sie angegeben haben, ignoriert alle Parameter, aber Sie können auch einige Parameter ignorieren.

in ist der Beginn der Umsetzung der Schließung. In Ihrem Beispielcode ist die Implementierung des Abschlusses leer.

Insgesamt diese Linie definiert eine Schließung "done" genannt, die eine optionale NSError (NSError?) hat, NSData (NSData) und Optional NSString (NSString?) und gibt nichts zurück (->()). Die tatsächliche Umsetzung der Schließung tut nichts.

+1

Erweitern bei @ drewag's Antwort ein wenig: "Das eigentliche Gerät tut absolut nichts" ... weil diese Schließung als Standardwert für die 'done'-Eigenschaft bereitgestellt wird und es wird erwartet, dass der Benutzer dieser 'Anfrage'-Klasse eine Schließung bereitstellt, die tatsächlich etwas bewirkt. In diesem Abschluss würden Sie lokale Namen für die Parameter angeben, anstatt "_" zu verwenden (wie in der Zeile 55 in diesem Geiste zu sehen ist). – rickster

+0

@rickster Danke für all deine faszinierenden Antworten! Ich habe eine andere Frage zu diesem Code im Wesentlichen. Wann wird die Funktion "Verbindung" aufgerufen? Ich habe festgestellt, dass es drei Funktionen gibt, die den gleichen Namen "Verbindung" haben, aber ich kann nicht finden, wo diese Funktion aufgerufen wird. Vielen Dank! – Ev3rlasting

+0

@ Ev3rlasting Das sind Delegatenrückrufe von NSURLConnection. Sie werden feststellen, dass der Code beim Erstellen der NSURLConnection in Zeile 21 "self" als Delegat übergibt. – drewag

12

_ ist ein Platzhaltername. Es zeigt an, dass ein Parameter erwartet wird, aber nicht verwendet wird. in zeigt das Ende der Typensignatur einer Schließung an. Diese ganze Zeile definiert eine Funktion, die drei Parameter benötigt und nichts tut.

0

"_" verwendet, um etwas anonym zu machen.

for (key, _) in dictionary{} 

Hier machen wir Wert als anonym.

In wird verwendet, um eine Schließung oder in einer Schleife zu starten, sowie wir für die Sammlung angeben, auf die Schleife angewendet wird.

Verwandte Themen