[KMP] expect/actual 은 무엇일까?

WonDDak·2024년 4월 29일
0

KMP- Kotlin MultiPlatform

목록 보기
6/12

처음 KMP 프로젝트를 만들면 shared 모듈에서 다음과 같은 코드를 볼 수 있다.

//iosMain
class IOSPlatform: Platform {
    override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}

actual fun getPlatform(): Platform = IOSPlatform()
//androidMain
class AndroidPlatform : Platform {
    override val name: String = "Android ${android.os.Build.VERSION.SDK_INT}"
}

actual fun getPlatform(): Platform = AndroidPlatform()
//commonMain
interface Platform {
    val name: String
}

expect fun getPlatform(): Platform

expect / actual은 KMP에서 제공되는 키워드 이다.

위 코드를 보면 유추 할 수 있듯이 플랫폼에 종속적인 부분을 구현해야할때 사용한다.

위 코드에서는 ios는 UIDevice android는 android.os.Build를 이용한다.

//commonMain
class Greeting {
    private val platform: Platform = getPlatform()

    fun greet(): String {
        return "Hello, ${platform.name}!"
    }
}

그래서 구현된 Greeting에서 getPlatform()을 통해 공유된 로직을 쓸 수 있다.

Kotlin/Native에는 이미 ios에서 사용하는 UIKIt,Foundation등이 사용 할 수있게 되어있으니 구현은 하기 나름이다.

profile
안녕하세요. 원딱입니다.

0개의 댓글