Swift: Definition und Syntax von Funktionen vs. Closures

7

Ist das eine Funktion oder eine Schließung?

%Vor%     
Rudiger 10.06.2014, 21:22
quelle

5 Antworten

9

1: Es ist eine Schließung.

Beispiele:

%Vor%
  

Funktionen sind eigentlich ein Sonderfall von Schließungen. Sie können eine schreiben   Schließen ohne Namen durch umgebenden Code mit geschweiften Klammern ({}). Verwenden Sie in bis   Trennen Sie die Argumente und den Rückgabetyp vom Hauptteil.

Auszug aus: Apple Inc. "Die schnelle Programmiersprache." iBooks. Ссылка

2: "in" ist nur die Notation, die gewählt wurde, um zu zeigen, wo die Argumente / der Rückgabetyp enden, und der Körper der Schließung beginnt. Es hat nichts mit Inout zu tun.

    
Mick MacCallum 10.06.2014, 21:41
quelle
5

Dadurch wird der Abschluss an die Konstante triple gebunden, die, wenn sie im globalen Gültigkeitsbereich ausgeführt wird, der Deklaration als Funktion ähnelt (siehe Kommentar von Eric unten für Unterschiede). Die Zeile (number: Int) in deklariert die Eingabeparameter für den Abschluss.

In diesem Fall kann der Typ jedoch weggelassen werden, da er aus dem Closure-Typ abgeleitet werden kann, und da er nur eine Anweisung enthält, kann er als Closure-Ausdruck mit impliziter Rückgabe wie folgt geschrieben werden:

%Vor%

Sie können mehr darüber im offiziellen Dokumentationskapitel über Schließungen lesen.

Ссылка

    
hallski 10.06.2014 21:43
quelle
4

Swift Closures sind wie folgt definiert:

%Vor%

Ihr Codebeispiel wird daher definitionsgemäß als Schließung betrachtet. Ich würde es jedoch wie folgt umschreiben, indem Sie den Rückgabetyp innerhalb der geschweiften Klammern verschieben:

%Vor%

Die Parameter und der Rückgabetyp beginnen nach der öffnenden geschweiften Klammer und enden vor dem Schlüssel in und der Körper der Schließung beginnt nach dem Schlüssel in und endet an der schließenden geschweiften Klammer. Als nächstes würde ich empfehlen, iBook von iTunes herunterzuladen und zu lesen, das Sie an folgendem Ort finden können:

Ссылка

    
Conrad Taylor 10.06.2014 21:45
quelle
3

Eine einfache Möglichkeit, zwischen Funktionen und Schließungen zu unterscheiden, ist

Globale Funktion: Haben Sie einen Namen . Erfasse keine Werte.

Verschachtelte Funktion: Haben Sie einen Namen . Erfasse Werte von umschließenden Funktionen.

Closure: Hat keinen Namen wie Funktion. Erfassen Sie Werte aus den benachbarten Blöcken.

    
Poles 17.04.2016 15:03
quelle
3

Eine Funktion ist eine Schließung, die einen Namen hat. Die Schließung, die Sie zur Verfügung gestellt haben, hat einen Namen und ist daher sowohl eine Funktion als auch eine Schließung.

Von der Entwicklerwebsite von Apple:

  

Globale und verschachtelte Funktionen, wie sie in Funktionen eingeführt wurden, sind tatsächlich   Sonderfälle von Verschlüssen. Verschlüsse haben eine von drei Formen:

     

Globale Funktionen sind Schließungen, die einen Namen haben und keine erfassen   Werte. Verschachtelte Funktionen sind Schließungen, die einen Namen haben und erfassen können   Werte aus ihrer umschließenden Funktion. Closure-Ausdrücke sind nicht benannt   Closures, die in einer Lightweight-Syntax geschrieben sind, mit der Werte erfasst werden können   ihr umgebender Kontext.

Ссылка

    
ScottyBlades 22.04.2017 18:44
quelle

Tags und Links