Ich versuche, über schnelle und Schließungen zu lernen. Ich stecke an diesem Beispiel fest.
%Vor%Was ist (Nummer: Int) - & gt; Int? Ist es eine Funktion? Wo ist es definiert? Ссылка
Was macht das Keyword "in"? Die Dokumente sagen, dass man "die Argumente trennen und den Typ vom Körper zurückgeben soll". Ich bin mir nicht sicher, ob ich das verstehe. Warum wird "in" nicht verwendet, um "let result = 3 * number" von "return result" zu trennen.
Ein Closing ist nur eine Funktion, bei der die Parameter innerhalb der Klammern verschoben werden, mit dem Schlüsselwort in
, um die Parameter vom Funktionskörper zu trennen. Die zwei folgenden Beispiele definieren äquivalente Funktionen:
Sie können sie beide auf genau dieselbe Weise aufrufen:
%Vor% Beachten Sie, dass das zweite Beispiel identisch mit dem ersten Beispiel ist. Nur im ersten Beispiel befinden sich die Parameter (number: Int) -> Int
außerhalb der Klammern und im zweiten Beispiel befinden sich die Parameter innerhalb der Klammern, gefolgt vom Schlüsselwort in
.
map
verwendet ein Array ( numbers
, in Ihrem Beispiel) und erstellt ein neues Array, das das Ergebnis der Anwendung der Closure-Funktion auf jedes Element in numbers
ist. Wenn numbers
also [1, 2, 3]
ist, beginnt das obige Beispiel mit 1
. Es wird die Closure-Funktion angewendet, die ein 3
erzeugt (weil es nur das Element aus dem ersten Array mit 3 multipliziert). Dies geschieht für jedes Element in numbers
, bis ein neues Array, [3, 6, 9]
, erstellt wurde.
Wenn Sie möchten, können Sie map
unter Verwendung der Namen der obigen Funktion oder der obigen Schließung aufrufen oder indem Sie sie explizit innerhalb von map
ausschreiben. Alle folgenden Beispiele sind völlig äquivalent:
Beachten Sie, dass Beispiel 3 das gleiche wie Beispiel 2 ist, nur in Beispiel 3 wird der Abschluss explizit innerhalb von map
angegeben, während in Beispiel 2 der Abschluss einer Konstanten namens myClosure
und der Konstante zugewiesen wurde wurde an map
geliefert.
Hoffe, das hilft - Schließungen machen Spaß, sind aber verwirrend.
Die Funktion, die Sie aufrufen, verwendet als Parameter einen Abschluss:
%Vor%Es wird erwartet, dass die Schließung der Funktion einen Parameter erhält, wenn sie von der aufgerufenen Funktion ausgeführt wird. Dieser Parameter ist in Ihrem Abschluss definiert:
%Vor%Sie können jetzt den Parameter in den Inhalt der Schließung verwenden
%Vor%Closures sind in sich abgeschlossene Funktionsblöcke, die weitergegeben und in Ihrem Code verwendet werden können.
Syntax:
%Vor%Praktisches Szenario: Wenn ein Benutzer einen Filter anwenden möchte und Werte auswählen möchte, die mehr als 300 sind (in diesem Fall), können wir Closures verwenden, um dies zu erreichen.
%Vor%Von unterhalb Code können Sie deutlich sehen, dass wir die Funktion elements.map () schließen.
Schließung:
%Vor% (num:Int)
ist ein Parameter.
Int? Wir geben den optionalen Integer-Typ zurück.
Nach in
können wir Ihre Logik schreiben.
Sie können mehr über die Schließung hier lesen.
>Tags und Links ios swift dictionary closures