expect y actual
Implementaciones específicas de plataforma
expect y actual es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
La necesidad de código específico de la plataforma
Algunas funcionalidades no tienen una implementación común, como obtener el nombre del sistema operativo, un UUID o la plataforma actual. KMM resuelve esto mediante el mecanismo expect/actual.
Declaraciones expect
En commonMain se declara una función o clase expect: un contrato sin cuerpo. El código común puede invocarla.
// commonMain
expect fun platformName(): Stringactual en Android
Cada plataforma proporciona una implementación actual que coincide con la firma.
// androidMain
actual fun platformName(): String = "Android " + android.os.Build.VERSION.SDK_INTactual en iOS
El conjunto de fuentes de iOS proporciona su propia versión mediante API nativas.
// iosMain
import platform.UIKit.UIDevice
actual fun platformName(): String =
UIDevice.currentDevice.systemName + " " + UIDevice.currentDevice.systemVersionUsarlo en el código común
El código común invoca la función esperada como si existiera; el compilador vincula el actual adecuado para cada destino.
// commonMain
class Platform {
val name: String get() = platformName()
}Clases expect
Puede declarar como expect una clase completa. Cada plataforma proporciona una clase actual con miembros coincidentes.
// commonMain
expect class FileReader(path: String) {
fun read(): String
}Implementaciones de clases actual
Las plataformas implementan la clase esperada mediante API nativas de archivos (por ejemplo, Java IO en Android y Foundation en iOS).
// androidMain
actual class FileReader actual constructor(private val path: String) {
actual fun read(): String = java.io.File(path).readText()
}expect con typealias
Un actual puede ser un typealias de un tipo de plataforma existente, evitando así crear un wrapper.
// commonMain
expect class Uuid
// jvm/androidMain
actual typealias Uuid = java.util.UUIDReglas para coincidir las firmas
El actual debe coincidir exactamente con el expect: mismo nombre, parámetros y tipo de retorno. Una discrepancia provoca un error de compilación, lo que garantiza la coherencia entre plataformas.
Cuándo no usar expect/actual
Prefiera interfaces con implementaciones de plataforma inyectadas en tiempo de ejecución cuando la abstracción sea más flexible. Reserve expect/actual para primitivas de plataforma pequeñas y fijas.
Una ilustración con código común
Fuera de KMM, la misma idea consiste simplemente en llamar a una abstracción. Aquí una función sencilla representa la llamada a la plataforma.
fun platformName(): String = "Demo Platform"
fun main() {
println("Running on " + platformName())
}Comprobación rápida
¿Dónde se escribe una declaración expect y dónde se encuentran sus implementaciones actual?
Resumen
expect/actual permite salvar las diferencias entre plataformas:
expectdeclara el contrato encommonMainactuallo implementa para cada plataforma (o mediantetypealias)- Las firmas deben coincidir exactamente
- Prefiera interfaces para las abstracciones flexibles
Siguiente: compartir la lógica de negocio.
Aprende Kotlin con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 51
- Lecciones
- 203
Preguntas frecuentes
¿La lección «expect y actual» es gratis?
Sí — el texto completo de «expect y actual» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «expect y actual»?
Implementaciones específicas de plataforma Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «expect y actual»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.