[SWIFT] Comprenons la fermeture!

Cette fois, j'ai appris la fermeture, donc je vais la sortir.

Qu'est-ce qu'une fermeture?

*** La fermeture est une partie du traitement réutilisable. *** *** Les fonctions sont un type de fermeture, elles ont donc de nombreuses utilisations communes. Pour utiliser la fonction, il était nécessaire de la définir avec le mot-clé "func", mais il existe un moyen de définir la fermeture comme une expression de fermeture.

*** Cliquez ici pour revoir la fonction !! *** Comprenons la fonction! (Https://qiita.com/syunta061689/items/77e8aa76070a734f1b4d)

La méthode de définition de base est la suivante.

qiita.rbvar


{(Nom de l'argument 1: Type,Nom de l'argument 2: Type...) ->Type de retour dans
Instruction exécutée lorsque la fermeture est exécutée
Renvoie la valeur de retour avec une instruction de retour si nécessaire
}

Regardons un exemple simple ensuite.

qiita.rbvar


let double = {(x:Int) -> Int in

return x * 5

}
double(5) //25

La description de l'argument et du type de retour est la même que pour la fonction, mais le type de retour et l'instruction sont séparés par le mot-clé in. Dans l'exemple ci-dessus, une fermeture qui prend un argument de type Int et renvoie une valeur de retour de type Int multipliée par 5 est définie et exécutée.

Fonctionne comme une fermeture

qiita.rbvar


func rectangleArea(height:Int,width:Int) -> Int {
 let result = height*width
 return result //Renvoie le résultat du calcul

}

let area = rectangleArea(height: 5,width: 6) //30

Dans l'exemple ci-dessus, le type de la variable est clairement déterminé comme Int-> Int, et le retour du résultat du calcul est exécuté et la valeur de retour est renvoyée.

Type de tableau comme fermeture

Voici un modèle pour renvoyer un tableau ou un dictionnaire:

*** Cliquez ici pour revoir le type de tableau !! *** Comprenons le type Array! (Https://qiita.com/syunta061689/items/89e549f4a3254f635ce1)

Regardons un exemple simple.

qiita.rbvar


func a(num: [Int] -> [Int] { //Renvoie un tableau de type Int
    print num
}
 
func b(strings: [String: Int]) -> [String: Int]{ //Permet de recevoir des dictionnaires avec des clés de type String et des valeurs de type Int.
    print strings
}

let test = a(num:0,1,2) 
let test1 = b(String:[Chimpanzé:0,gorille:1]) 

print(a)//[0,1,2]
print(b) //[Chimpanzé:0,gorille:1]

finalement

Cette fois, j'ai résumé les bases de la clôture. Cependant, le contenu décrit cette fois est le fondement des bases, la fermeture est profonde et il y a un style d'écriture compliqué, donc je continuerai à le comprendre fermement à l'avenir.

Recommended Posts

Comprenons la fermeture!
Comprenons la fonction!
Comprenons la déclaration if!
Comprenons la déclaration de garde!
Comprenons la déclaration for-in!
Comprenons l'instruction switch!
Comprenons le type Array (Element)!
Comprenons le type facultatif (enveloppé)!
Comprendre Docker
Comprendre DI
[Swift vs Java] Comprenons le statique et le final