Назад к вопросам
Junior — Middle
71
Какое отличие существует между механизмом expect/actual и стандартными интерфейсами в программировании?
Ответ от нейросети
sobes.tech AI
Механизм expect/actual используется в Kotlin Multiplatform для определения платформо-зависимого кода. Ключевое отличие от стандартных интерфейсов в том, что:
- expect объявляет API без реализации (например, функцию или класс), которая ожидает платформо-специфическую реализацию.
- actual предоставляет конкретную реализацию для определённой платформы (JVM, JS, Native).
В отличие от интерфейсов, которые определяют контракт и требуют реализации в классах, expect/actual разделяет объявление и реализацию между платформами, позволяя писать общий код с платформо-зависимыми деталями.
Пример:
// commonMain
expect fun getPlatformName(): String
// androidMain
actual fun getPlatformName() = "Android"
// iosMain
actual fun getPlatformName() = "iOS"
Таким образом, expect/actual помогает создавать мультиплатформенные библиотеки с разной реализацией под каждую платформу, тогда как интерфейсы просто задают контракт для классов в одной платформе.