Die Anleitung zu Swift Closure
1. Was ist Closure?
Closure: Closure ist ein besonderes Befehlblock. Es kann 0 oder mehr Parameter haben und das Rückgabetyp haben. Es ist so ziemlich gleich wie den Befehlblock in C oder Object-C. Es bedeutet ein schließendes Package
Es ist einfach, dass Sie können das folgende Meldung sehen und dann können Sie seine Bedeutung vermuten?

Die oben Meldungen können durch das folgende Beispiel erklärt werden

Das ist ein Syntax für die Variable-meldung der Daten und die Zuweis der Wert für die Variable, das an Sie gewöhnt

MyFirstClosure.swift
import Foundation
// Eine Variable myVar1 mit dem Datentyp erklären und die Wert für sie übertragen.
var myVar1 : () -> () = {
print("Hello from Closure 1");
}
// Eine Variable myVar2 mit dem Datentyp erklären und die Wert für sie übertragen.
var myVar2 : () -> (String) = { () -> (String) in
return "Hello from Closure 2"
}
// Eine Variabel myVar3 mit dem Datentyp erklären und die Wert für sie übertragen.
var myVar3 : (Int, Int) -> (Int) = { (a : Int, b: Int) -> (Int) in
var c : Int = a + b
return c
}
func test_closure() {
// Closure implementieren.
myVar1()
// Closure implementieren und die Rückgabewert bekommen.
var str2 = myVar2()
print(str2)
// Die Closure implementieren und den Parameter übertragen
// und die Rückgabenwert bekommen
var c: Int = myVar3(11, 22)
print(c)
}
Closure ist hauptsächlich der Befehlblock. Es kann den Parameter und Rückgabentyp haben

Die Syntax vom Closure:
{ (parameters) -> returntype in
// statements
}
2. Der Vergleich zwischen Function und Closure
Function ist ein besonderer Fall vom Closure. Function ist ein Closure mit dem Name. Oder Closure ist ein anonyme Function
Die Definition

Die Benutzung

3. Die Meldung des anonymen Closure
Bei der Meldung vom Closure brauchen Sie den Name vom Parameter nicht schreiben. Der Parameter können durch $0, $1,...verweisen
AnonymousClosure.swift
import Foundation
// Eine Closure normal erklären.
var myClosure : (String, String) -> String
= { (firstName: String, lastName: String) -> String in
return firstName + " " + lastName
}
// Eine Closure anonym erklären (anonymous).
// (den Name der Parameter ignorieren).
var anonymousClosure : (String, String) -> String
= {
// benutzen:
// $0: der erste Parameter
// $1: der zweite Parameter
return $0 + " " + $1
}
Beachten Sie: $0, $1,... sind die anonymen Parameter. Sie werden in dem anonymen Closure nur benutzt . Wenn Sie sie in den normalen Closure benutzen, bekommen Sie eine FehleranmeldungAnonymous closure arguments cannot be used inside a closure that has explicit arguments
Zum Beispiel über das anonyme Closure (2):
AnonymosClosure2.swift
import Foundation
func test_anonymousClosure() {
// Eine Variable von dem Typ Closure erklären.
var mySum : ( Int, Int ) -> (Int)
// Eine anonyme Closure für sie anweisen
// $0: der erste Parameter
// $1: der zweite Parameter
mySum = {
return $0 + $1
}
var value = mySum(1, 2)
print(value)
}
4. Die Rückgabewert implizieren
Wenn es in der Inhalt vom Closure eine Ausdruck gibt, können Sie das Schlusselwort return.ignorieren
ImplicitReturnValues.swift
import Foundation
// Das ist eine Closure, deren Inhalt nur eine einzige Ausdruck hat
var closureWithReturn = { (a: Int, b: Int) -> Int in
// Eine einzige Ausdruck (expression) .
return a + b
}
// Den Schlüsselwort 'return' ignorieren.
var closureWithoutReturn = { (a: Int, b: Int) -> Int in
// Wenn eine Ausdruck (expression) einzige ist,
// den Schlüsselswort 'return' ignorieren können.
a + b
}
Anleitungen Swift
- Installieren Sie die virtuelle Mac OS-Maschine in VMWare
- Installieren Sie XCode
- Die Anleitung zum Swift für den Anfänger
- Die Anleitung zu Swift Function
- Die Anleitung zu Swift Closure
- Klasse und Objekt in Swift
- Die Anleitung zu Swift Enum
- Die Anleitung zu Swift Struct
- Programmierung für Team mit XCode und SVN
Show More