Sobes.tech
Назад к вопросам
Junior — Middle
70

Можешь ли ты описать основные отличия и назначения ключевых конструкций expect и actual в рамках тестирования?

Ответ от нейросети

sobes.tech AI

Ключевые конструкции expect и actual используются в Kotlin Multiplatform для реализации платформозависимого кода.

  • expect объявляет интерфейс, класс, функцию или свойство без реализации — то есть задаёт контракт, который должен быть реализован на каждой целевой платформе.
  • actual предоставляет конкретную реализацию для платформы (Android, iOS, JVM и т.д.).

В контексте тестирования это позволяет писать общий тестируемый код с expect-объявлениями, а для каждой платформы реализовывать actual-версию, что упрощает кроссплатформенное тестирование.

Пример:

// commonMain
expect fun getPlatformName(): String

// androidMain
actual fun getPlatformName() = "Android"

// iosMain
actual fun getPlatformName() = "iOS"

Таким образом, expect/actual помогают разделять платформозависимую логику и обеспечивают возможность писать тесты, которые работают на всех платформах.