Le Tutoriel de Swift Closure
View more Tutorials:
Closure: Closure est un bloc spécial. Il peut obtenir éventuellement des paramètres et un type de retour.
Il est presque similaire comme un bloque dans C ou Object-C.
Il est presque similaire comme un bloque dans C ou Object-C.
Afin de simplifier, vous pouvez observer la déclaration suivante. Pourriez- vous déviner sa signification?

La déclaration dessous peut être décryptée par l'illustration suivante:

C'est une syntaxe pour déclarer les variables avec le type de données et lui assigner des valeurs avec lesquelles vous êtes familier.

MyFirstClosure.swift
import Foundation // Déclarez la variable myVar1, avec le type de données, et assignez la valeur. var myVar1 : () -> () = { print("Hello from Closure 1"); } // Déclarez la variable myVar2, avec les types de données, et assignez une valeur. var myVar2 : () -> (String) = { () -> (String) in return "Hello from Closure 2" } // Déclarez la variable myVar3, avec les types de données, et assignez la valeur. var myVar3 : (Int, Int) -> (Int) = { (a : Int, b: Int) -> (Int) in var c : Int = a + b return c } func test_closure() { // Exécutez de la fermeture (Closure). myVar1() // Exécutez de la Closure et obtenir la valeur de retour. var str2 = myVar2() print(str2) // Exécutez de la Closure, passez (pass) les paramètres // et obtenez une valeur de retour. var c: Int = myVar3(11, 22) print(c) }
Closure est un bloque qu'il peut-être comprendre des paramètres et la type de retour.

Syntaxe de Closure:
{ (parameters) -> returntype in // statements }
Function est un cas particulière de Closure. Function est une Closure nommé ou peut-être dire que la Closure est une Function anonyme.
Définition:

Usage:

Quand déclarer Closure, il n'est pas nécessaire d'écrire le nom des paramètres. Ces paramètres peuvent être références par $0, $1,...
AnonymousClosure.swift
import Foundation // Déclarez une Closure de la manière habituelle. var myClosure : (String, String) -> String = { (firstName: String, lastName: String) -> String in return firstName + " " + lastName } // Déclarez une Closure de manière anonyme (anonymous). // (Ignorez les noms de paramètres). var anonymousClosure : (String, String) -> String = { // En utilisant // $0: Pour le premier paramètre // $1: Pour le deuxième paramètre. return $0 + " " + $1 }
Note: $0, $1,... sont des paramètres anonymes. Ils sont uniquement utilisés dans l'anonymat Closure. Si vous utilisez le Closure normal, vous recevrez un message d'erreur:Anonymous closure arguments cannot be used inside a closure that has explicit arguments
Par exemple, avec l'anonymat Closure (2):
AnonymosClosure2.swift
import Foundation func test_anonymousClosure() { // Déclarez une variable du type de Closure. var mySum : ( Int, Int ) -> (Int) // Assignez une Closure annonyme pour lui. // $0: Pour le premier paramètre // $1: Pour le deuxième paramètre. mySum = { return $0 + $1 } var value = mySum(1, 2) print(value) }
Si dans le contenu de Closure, il y a une seule expression, vous pouvez omettre le mot- clé return.
ImplicitReturnValues.swift
import Foundation // Ceci est une Closure dont le contenu a une seule expression var closureWithReturn = { (a: Int, b: Int) -> Int in // Une expression (expression) unique. return a + b } // Peut omettre le mot-clé 'return'. var closureWithoutReturn = { (a: Int, b: Int) -> Int in // Si seulement une seule expression. // Omettre le mot clé 'return'. a + b }
- TODO