0Pricing
Swift Academy · Leçon

Fonctions comme valeurs de première classe

Stockez des fonctions dans des variables, transmettez-les comme arguments et retournez-les depuis d’autres fonctions.

Fonctions comme valeurs de première classe est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Bienvenue

Dans Swift, les fonctions sont des valeurs de première classe : vous pouvez les stocker dans des variables, les passer comme arguments, les retourner depuis d’autres fonctions et les imbriquer dans d’autres fonctions.

Types de fonctions

Chaque fonction possède un type défini par ses types de paramètres et de retour : ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } let operation: (Int, Int) -> Int = add print(operation(3, 4)) // 7 ``` Le type de `add` est `(Int, Int) -> Int`.

Passer des fonctions comme arguments

```swift func apply(_ f: (Int) -> Int, to value: Int) -> Int { f(value) } func double(_ n: Int) -> Int { n * 2 } print(apply(double, to: 5)) // 10 ``` C’est le fondement des fonctions d’ordre supérieur comme `map` et `filter`.

Retourner des fonctions

```swift func multiplier(by factor: Int) -> (Int) -> Int { return { value in value * factor } } let triple = multiplier(by: 3) print(triple(7)) // 21 ``` Retourner une fonction crée une *fermeture* qui capture `factor`.

Fonctions imbriquées

Les fonctions peuvent être définies à l’intérieur d’autres fonctions : ```swift func chooseStep(goForward: Bool) -> (Int) -> Int { func forward(_ n: Int) -> Int { n + 1 } func backward(_ n: Int) -> Int { n - 1 } return goForward ? forward : backward } let step = chooseStep(goForward: true) print(step(3)) // 4 ```

Les fermetures comme raccourci

Les littéraux de fermeture anonymes peuvent remplacer n’importe quel type de fonction : ```swift let square: (Int) -> Int = { $0 * $0 } print(square(6)) // 36 let doubled = [1, 2, 3].map { $0 * 2 } // [2, 4, 6] ``` `$0` désigne le premier argument dans la forme abrégée d’une fermeture.

Stocker des fonctions dans des collections

```swift let operations: [(Int, Int) -> Int] = [ { $0 + $1 }, { $0 - $1 }, { $0 * $1 } ] for op in operations { print(op(10, 3)) } // 13, 7, 30 ```

Syntaxe des fermetures finales

Lorsque le dernier argument est une fonction, vous pouvez l’écrire en dehors des parenthèses : ```swift func withLogging(_ label: String, action: () -> Void) { print("Start: \(label)") action() print("End: \(label)") } withLogging("fetch") { fetchData() } ```

Identité et égalité des fonctions

Vous ne pouvez pas comparer deux valeurs de fonction avec `==` dans Swift : les fonctions ne sont pas conformes à `Equatable` : ```swift // let same = add == add ❌ ``` Si vous devez les comparer, encapsulez la fonction dans une structure ou une classe conforme à `Equatable`.

Schéma de currification

Simulez la currification en retournant des fonctions partiellement appliquées : ```swift func add(_ a: Int) -> (Int) -> Int { { b in a + b } } let add5 = add(5) print(add5(3)) // 8 print(add5(10)) // 15 ``` Utile pour créer des fonctions spécialisées à partir de fonctions génériques.

Vérification rapide

Quel est le type de fonction d’une fonction qui accepte deux `Int`s et retourne un `Int` ?

Récapitulatif

Points essentiels : • Les fonctions ont des types comme `(ParamTypes) -> ReturnType` • Stockez-les dans des variables, passez-les comme arguments et retournez-les depuis des fonctions • Les fermetures (`{ }`) sont des valeurs de fonction anonymes • La syntaxe des fermetures finales simplifie les appels • Retourner des fonctions depuis des fonctions crée des fermetures qui capturent des variables Ensuite : la leçon sur le chaînage et le déballage des optionnels.

Questions Fréquemment Posées

La leçon « Fonctions comme valeurs de première classe » est-elle gratuite ?

Oui — le texte complet de « Fonctions comme valeurs de première classe » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Fonctions comme valeurs de première classe » ?

Stockez des fonctions dans des variables, transmettez-les comme arguments et retournez-les depuis d’autres fonctions. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Fonctions comme valeurs de première classe » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Étiquettes d’arguments et noms de paramètres
  2. Paramètres par défaut et variadiques
  3. Paramètres in-out et retours multiples
  4. Fonctions comme valeurs de première classe
← Retour à Swift Academy