Что такое expect/actual

«Что такое expect/actual» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

expect/actual — это механизм в Kotlin Multiplatform (KMP) для разделения объявления (expect) и реализации (actual) кода под разные платформы.

Пример:

// Общий модуль (expect)  
expect fun getPlatformName(): String  

// Android реализация (actual)  
actual fun getPlatformName(): String = "Android"  

// iOS реализация (actual)  
actual fun getPlatformName(): String = "iOS"  

Нюансы:

  • expect объявляет контракт, actual предоставляет платформо-специфичную реализацию.
  • Подходит для функций, классов, свойств, объектов.
  • Компилятор проверяет соответствие сигнатур.
  • Если actual отсутствует — ошибка компиляции.

Используется для кроссплатформенной разработки без дублирования общего API.