코틀린 멀티플랫폼 프로젝트에서는 코드를 여러 플랫폼(JVM, Android, iOS, JavaScript)에서 공유한다.
그러나 각 플랫폼마다 특정한 구현이 필요한 경우가 있을 수 있다. 이런 경우를 위해 expect와 actual 키워드를 사용하여 플랫폼별로 다른 구현을 할 수 있다.
expect로 선언 후, actual 키워드를 사용하여 구현한다.
다음은 예시 코드이다.
// commonMain
expect class Platform() {
val name: String
}
fun getPlatformName(): String {
return Platform().name
}
// jvmMain
actual class Platform actual constructor() {
actual val name: String = "JVM"
}
// iosMain
actual class Platform actual constructor() {
actual val name: String = "iOS"
}
//Usage
fun main(){
val p = Platform()
println(p.name) //플랫폼 마다 결과 출력
}
인터페이스와 비슷한 역할을 하며, 구체적인 구현은 제공하지 않는다.
그리고 오직 멀티플랫폼 프로젝드에서만 사용된다.