Logo de Swift en orange sur fond gris qui sert de hero de présentation de la formation sur les fondamentaux de Swift

Fonction

Les fonctions sont un concept fondamental en programmation. Elles permettent d’organiser, structurer et réutiliser ton code de manière efficace. En isolant un morceau de programme dans une fonction, tu rends ton code plus clair et modulaire. C’est également très pratique, car tu évites de réécrire plusieurs fois le même bloc de code. En cas de problème, il devient beaucoup plus simple de corriger ou d’améliorer ton programme, puisqu’il suffit de modifier la fonction à un seul endroit.

Introduction

Pour introduire les fonctions, je te propose d’observer un code écrit sans utiliser de fonctions, puis de le réécrire en les intégrant. Dans l’exemple ci-dessous, on peut imaginer vouloir créer un programme qui génère des tickets de train. Ici, j’en ai imprimé cinq.


print("Billet de train du 10 mai 2024")
print("Billet de train du 10 mai 2024")
print("Billet de train du 10 mai 2024")
print("Billet de train du 10 mai 2024")
print("Billet de train du 10 mai 2024")

J’aurais pu directement écrire ce print dans une fonction comme ceci :


func ticketTrain(){
	print("Billet de train du 10 mai 2024")
}

ticketTrain()
ticketTrain()
ticketTrain()
ticketTrain()
ticketTrain()

L’avantage ici, c’est que si je souhaite modifier le texte de mon print (par exemple, changer la date), je vais le faire à un seul endroit dans mon code, et la modification se fera partout où j’appelle cette fonction. Dans le code précédent, j’aurais dû modifier chaque ligne à la main, ce qui est relou et répétitif. On voit ici la base des fonctions, et tu comprends déjà l’utilité de cette notion dans nos programmes.

Déclaration de base

Pour déclarer une fonction en Swift, on utilise le mot-clé func, suivi du nom de la fonction, de la liste des paramètres (entre parenthèses, qui peut être vide) et du corps de la fonction (entre accolades).


func helloWorld() {
	print("Hello World!")
}

helloWorld()

// Lecture dans la console -> Hello World!

Paramètres

Les fonctions peuvent prendre des paramètres en arguments, ce qui permet de les personnaliser en fonction de nos besoins. Ça rend nos fonctions plus flexibles et optimisées pour différents contextes. Je reprends mon exemple, mais cette fois en ajoutant des paramètres : on veut, par exemple, que la date du jour soit paramétrable lors de l’appel de la fonction.


func ticketTrain(day: String){
	print("Billet de train du 10 \(day) 2024")
}

ticketTrain(day : 22)

// Lecture dans la console -> Billet de train du 22 mai 2024

Les fonctions peuvent accepter des paramètres pour leur fournir des données sur lesquelles travailler. Les paramètres sont des valeurs disponibles uniquement dans la portée de la fonction (entre les accolades {}). Ils sont typables et on peut définir plusieurs paramètres de différents types.

Plusieurs paramètres


func sayHello(to: String, and: String) {
	print("Salut \(to), et \(and)")
}

sayHello(to: "Luke", and: "Anakin")

// Lecture dans la console -> Salut Luke et Anakin

Il n’y a pas de limite en nombre de paramètres pour une fonction.

Calcul avec des paramètres


func triple(value: Int) {
	let result = value * 3
	print("Si vous multipliez \(value) par 3, vous obtiendrez \(result)")
}

triple(value: 10)

// Lecture dans la console -> Si vous multipliez 10 par 3, vous obtiendrez 30.

Les paramètres de la fonction peuvent être utilisés pour effectuer n’importe quel type de calcul. Il est possible de créer des algorithmes propres à la fonction (c’est même le but).

Paramètres par défaut


func sayMyName(name: "Inconnu") {
    print("Tu est, \(name)!")
}

sayMyName()
sayMyName(name: "Heisenberg") 

/* Lecture dans la console ->
Tu est, Inconnu
Tu est, Heisenberg
*/

Les paramètres peuvent avoir des valeurs par défaut, qui sont utilisées si aucun argument n’est fourni lors de l’appel.

Étiquette


func add(a number1: Int, b number2: Int) -> Int {
    return number1 + number2
}

var result = add(a: 10, b: 8)
print(result)

// Lecture dans la console -> 18

Tu peux donner une étiquette à un paramètre. Dans ce cas, l’étiquette permet d’appeler le paramètre en dehors de la fonction, et le label sera utilisé en interne dans la fonction.

Omission


func subtract(_ a: Int, _ b: Int) -> Int {
    return b - a
}

let difference = subtract(5, 10)
print(difference) 

// Lecture dans la console -> 10

Tu as également la possibilité d’omettre les labels en utilisant un underscore _ devant. Ainsi, tu n’auras pas besoin de les utiliser lors de l’appel.

Valeurs de retour (return)


func add(num1: Int, num2: Int  ) -> Int {
   let result = num1 + num2
   return result
}

var myResult = add(num1: 7, num2: 7)

print(myResult)

// Lecture dans la console -> 14

Le mot-clé return permet à une fonction de renvoyer une valeur au code qui l’appelle. Le type de cette valeur doit correspondre à ce qui a été spécifié dans la déclaration de la fonction, en utilisant la notation -> Type (par exemple, -> Int pour un entier, ou -> String pour une chaîne de caractères). Si une fonction ne doit pas renvoyer de valeur, elle n’a pas besoin d’utiliser return. Le résultat renvoyé peut ensuite être stocké ou utilisé directement par l’appelant, en fonction des besoins.

Exercices Pratiques

Exo fonction

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

Ici, tu vas te familiariser avec les fonctions. C’est une notion importante à connaître et assez simple à appréhender, à condition de prendre le temps de bien pratiquer. Alors entraîne-toi !

Quizz

Après un peu de pratique, il est temps de te tester avec un petit quiz pour vérifier si tout est clair pour toi. Prends ton temps, lis bien les questions, et bonne chance.

Note

Les fonctions sont des blocs de code réutilisables qui permettent d’exécuter une tâche spécifique. Elles rendent ton code plus organisé, plus clair et plus facile à maintenir. En définissant une fonction, tu peux éviter les répétitions inutiles et simplifier les modifications, car une seule correction suffit pour affecter tous les endroits où la fonction est utilisée.

Exercices Pratiques

Exo fonction

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

Ici, tu vas te familiariser avec les fonctions. C’est une notion importante à connaître et assez simple à appréhender, à condition de prendre le temps de bien pratiquer. Alors entraîne-toi !

Quizz

Après un peu de pratique, il est temps de te tester avec un petit quiz pour vérifier si tout est clair pour toi. Prends ton temps, lis bien les questions, et bonne chance.

Note

Les commentaires sont là pour t’aider à expliquer ton code ou à le rendre plus lisible. Utilise-les avec modération : un code clair et bien structuré a souvent besoin de peu de commentaires.