0Pricing
Kotlin Academy · Leçon

expect et actual

Implémentations propres à la plateforme

expect et actual est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 2 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 Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

Le besoin de code propre à la plateforme

Certaines fonctionnalités n’ont pas d’implémentation commune : obtenir le nom de l’OS, un UUID ou la plateforme actuelle. KMM répond à ce besoin avec le mécanisme expect/actual.

Déclarations expect

Dans commonMain, vous déclarez une fonction ou une classe expect : un contrat sans corps. Le code commun peut l’appeler.

// commonMain
expect fun platformName(): String

actual sur Android

Chaque plateforme fournit une implémentation actual correspondant à la signature.

// androidMain
actual fun platformName(): String = "Android " + android.os.Build.VERSION.SDK_INT

actual sur iOS

L’ensemble de sources iOS fournit sa propre version en utilisant les API natives.

// iosMain
import platform.UIKit.UIDevice

actual fun platformName(): String =
    UIDevice.currentDevice.systemName + " " + UIDevice.currentDevice.systemVersion

Utilisation dans le code commun

Le code commun appelle la fonction attendue comme si elle existait ; le compilateur lie la bonne implémentation actual pour chaque cible.

// commonMain
class Platform {
    val name: String get() = platformName()
}

Classes expect

Vous pouvez déclarer une classe entière avec expect. Chaque plateforme fournit une classe actual dont les membres correspondent.

// commonMain
expect class FileReader(path: String) {
    fun read(): String
}

Implémentations de classes actual

Les plateformes implémentent la classe attendue à l’aide des API natives de fichiers (par exemple Java IO sur Android et Foundation sur iOS).

// androidMain
actual class FileReader actual constructor(private val path: String) {
    actual fun read(): String = java.io.File(path).readText()
}

expect avec typealias

Un actual peut être un typealias vers un type de plateforme existant, ce qui évite d’utiliser une enveloppe.

// commonMain
expect class Uuid

// jvm/androidMain
actual typealias Uuid = java.util.UUID

Règles de correspondance des signatures

L’actual doit correspondre exactement à l’expect : même nom, mêmes paramètres et même type de retour. Une différence provoque une erreur de compilation et garantit la cohérence entre les plateformes.

Quand ne pas utiliser expect/actual

Préférez de simples interfaces avec des implémentations de plateforme injectées lors de l’exécution lorsque l’abstraction doit être plus flexible. Réservez expect/actual aux primitives de plateforme petites et fixes.

Illustration en code commun

En dehors de KMM, la même idée consiste simplement à appeler une abstraction. Ici, une fonction ordinaire remplace l’appel à la plateforme.

fun platformName(): String = "Demo Platform"

fun main() {
    println("Running on " + platformName())
}

Vérification rapide

Où écrit-on une déclaration expect et où place-t-on ses implémentations actual ?

Récapitulatif

expect/actual comble les différences entre plateformes :

  • expect déclare le contrat dans commonMain
  • actual l’implémente pour chaque plateforme (ou au moyen de typealias)
  • Les signatures doivent correspondre exactement
  • Préférez les interfaces pour les abstractions flexibles

Ensuite : partager la logique métier.

Questions Fréquemment Posées

La leçon « expect et actual » est-elle gratuite ?

Oui — le texte complet de « expect et actual » 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 Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « expect et actual » ?

Implémentations propres à la plateforme Tu pratiques Kotlin 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 Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin 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 2 sur 4.

Combien de temps prend la leçon « expect et actual » ?

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 Kotlin Academy ?

Oui. Chaque leçon Kotlin 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. Structure d’un projet KMM
  2. expect et actual
  3. Partager la logique métier
  4. API des plateformes
← Retour à Kotlin Academy