devstory

Le Tutoriel de Swift Closure

View more Tutorials:

Suivez-nous sur notre fanpage pour recevoir des notifications chaque fois qu'il y a de nouveaux articles. Facebook

1- Qu'est-ce que Closure?

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.
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
}

2- Fonction avec Closure

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:

3- La clôture anonyme

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) 
}

4- Des valeurs de retour implicites

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 
}

5- Clôture dans une fonction

  • TODO

View more Tutorials:

Peut-être que vous êtes intéressé

Voici des leçons en ligne à part du site web o7planning que nous recommandons. La liste comprend des leçons en ligne et celles en promo.