Cette fois, j'ai appris la fermeture, donc je vais la sortir.
*** 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.
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.
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]
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