Kotlin Academy · Lección

expect y actual

Implementaciones específicas de plataforma

Lección 2 de 413 pasos

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(): String

actual 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_INT

actual 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.systemVersion

Usarlo 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.UUID

Reglas 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:

  • expect declara el contrato en commonMain
  • actual lo implementa para cada plataforma (o mediante typealias)
  • Las firmas deben coincidir exactamente
  • Prefiera interfaces para las abstracciones flexibles

Siguiente: compartir la lógica de negocio.

Gratis para empezar

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.

Todas las lecciones de este curso

  1. Estructura de proyectos KMM
  2. expect y actual
  3. Compartir la lógica de negocio
  4. API de plataforma
← Volver a Kotlin Academy