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(): Stringactual sur Android
Chaque plateforme fournit une implémentation actual correspondant à la signature.
// androidMain
actual fun platformName(): String = "Android " + android.os.Build.VERSION.SDK_INTactual 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.systemVersionUtilisation 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.UUIDRè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 :
expectdéclare le contrat danscommonMainactuall’implémente pour chaque plateforme (ou au moyen detypealias)- 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.