Xcode
Applications
© The scientific sentence. 2010
| |
|
Xcode
2. Fonctions et fermetures
On Utilise func pour déclarer une fonction. On
l'appelle en ecrivant son nom avec une liste d'arguments
entre parenthèses.
On utilise le symbole -> pour séparer les noms et
types de paramètres du type de retour de la fonction.
Exemple:
func Dareen(nom: String, jour: String) -> String {
return "Bonjour \ (nom), aujourd'hui est \ (jour)."
}
Dareen("Itri", "mardi")
Autre exemple:
Utilisez un tuple pour renvoyer plusieurs valeurs d'une fonction.
func itri() -> (Double, Double, Double) {
return (2.17, 23.67, 48.12)
}
itri()
Les fonctions peuvent également prendre un nombre variable
d'arguments, en les rassemblant dans un tableau.
Exemple:
func sumOf(nombres: Int...) -> Int {
var sum = 0
for nombre in nombres{
sum += nombre
}
return sum
}
sumOf()
sumOf(42, 597, 12)
Les fonctions peuvent être imbriquées. Les fonctions imbriquées ont
accès aux variables déclarées dans la fonction externe.
On utilise des fonctions imbriquées pour organiser le code
dans une fonction longue ou complexe.
Exemple:
funcretourne7() -> Int {
var y = 1
funcadd() {
y += 6
}
add()
return y
}
retourne7()
Les fonctions sont un type de première classe. Cela signifie qu'une fonction
peut renvoyer une autre fonction comme valeur.
Exemple:
func makeIncrementer() -> (Int -> Int) {
func addOne(number: Int) -> Int {
return 1 + number
}
return addOne
}
var increment = makeIncrementer()
increment(7)
Une fonction peut prendre une autre fonction comme l'un de ses arguments.
Exemple:
func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
funclessThanTen(number: Int) -> Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen)
Les fonctions sont en fait un cas particulier de fermetures.
Vous pouvez écrire une clôture sans nom en entourant le code
avec des accolades ({}). Utilisez in pour séparer les arguments
et renvoyer le type du corps.
Exemple:
numbers.map({
number: Int) -> Int in
let result = 3 * number
return result
})
|
|