Swift if let en Kotlin : travail sécurisé avec nullable en 2025

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Swift 'if let' dans le monde Kotlin : comment arrêter d'avoir peur de null et commencer à vivre

\n\n

Si vous êtes déjà passé de Swift à Kotlin (ou l'inverse), vous vous êtes sûrement demandé : « Comment faire ce fameux if let en Kotlin ? ». C'est l'une des questions les plus populaires sur Stack Overflow, et pour cause. Les deux langages sont jeunes, tous deux ont absorbé le meilleur de la programmation fonctionnelle, mais la gestion des optionnels (nullable) y est implémentée différemment.

\n\n

Dans cet article, nous ne montrerons pas simplement comment émuler if let. Nous analyserons les meilleures pratiques de 2025 qui rendront votre code Kotlin non seulement sécurisé, mais aussi élégant. Vous apprendrez quand utiliser let, en quoi also est meilleur que apply, et pourquoi le smart cast est votre nouveau meilleur ami.

\n\n

Petit rappel : qu'est-ce que Swift 'if let' ?

\n\n

Pour ceux qui ne le savent pas : en Swift, if let est une construction qui vérifie simultanément si une variable optionnelle contient une valeur, et si oui, l'extrait dans une nouvelle constante.

\n\n
// Swift\nif let unwrappedName = optionalName {\n    print("Bonjour, \\(unwrappedName)!")\n} else {\n    print("Nom absent")\n}
\n\n

C'est sécurisé, lisible et cela évite d'utiliser accidentellement nil. Kotlin n'a pas cette syntaxe intégrée, mais dispose de tout un arsenal d'outils qui fonctionnent encore mieux. Voyons cela.

\n\n

Méthode n°1 : 'if' classique + smart cast

\n\n

L'équivalent le plus direct de if let en Kotlin est un simple if avec vérification de null. Le compilateur Kotlin est suffisamment intelligent pour considérer la variable comme non-null dans le bloc if après la vérification. C'est ce qu'on appelle le smart cast.

\n\n
// Kotlin — équivalent de Swift 'if let'\nval optionalName: String? = "Alice"\n\nif (optionalName != null) {\n    // Ici, optionalName est automatiquement converti en String (pas String?)\n    println("Bonjour, $optionalName!")\n} else {\n    println("Nom absent")\n}
\n\n

Pourquoi c'est génial ? Pas de variables supplémentaires, pas de fermetures. Le code se lit comme du code impératif classique. Cependant, il y a un détail : le smart cast ne fonctionne que pour les variables locales (val). Si optionalName est une propriété de classe (var), le compilateur ne peut pas garantir qu'elle n'aura pas changé entre la vérification et l'utilisation.

\n\n

Méthode n°2 : La fonction '.let' — la reine de l'élégance

\n\n

La fonction let est l'« équivalent if let » le plus populaire en Kotlin. Elle exécute un bloc de code uniquement si l'objet n'est pas null. À l'intérieur du bloc, l'objet est accessible via it (ou vous pouvez lui donner un nom personnalisé).

\n\n
// Swift if let → Kotlin .let\noptionalName?.let { name -> \n    println("Bonjour, $name!")\n} ?: println("Nom absent")
\n\n

Remarquez le ?: — c'est l'opérateur Elvis. Il exécute le code à droite si la valeur à gauche est null. Associé à let, cela donne un équivalent complet de if-else.

\n\n

Quand utiliser let ?

\n
    \n
  • Quand vous devez effectuer une chaîne d'actions avec une valeur non-null
  • \n
  • Quand vous travaillez avec des chaînes d'appels nullable (chaining)
  • \n
  • Quand vous voulez limiter la portée d'une variable
  • \n
\n\n

Exemple avec chaîne d'appels :

\n\n
data class User(val name: String?, val email: String?)\n\nfun processUser(user: User?) {\n    user?.let { u ->\n        u.name?.let { n -> println("Nom : $n") }\n        u.email?.let { e -> println("Email : $e") }\n    }\n}
\n\n

Méthode n°3 : '.also' pour les effets secondaires

\n\n

La fonction also ressemble à let, mais elle retourne l'objet lui-même, pas le résultat de la lambda. C'est pratique quand vous devez faire quelque chose avec l'objet (par exemple, du logging) et continuer à travailler avec lui.

\n\n<

Blogs

Book Recommendations