Sobes.tech
Back to questions
Junior — Middle
69

Какое отличие существует между механизмом expect/actual и стандартными интерфейсами в программировании?

Answer from AI

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 помогает создавать мультиплатформенные библиотеки с разной реализацией под каждую платформу, тогда как интерфейсы просто задают контракт для классов в одной платформе.