Kotlin expect、actualキーワード
マルチプラットフォーム開発(expect、actual)
expectとactualキーワードは、Kotlin Multiplatformプロジェクトで使用される特別なキーワードである。これは、Kotlinが複数のプラットフォームで使用されるように設計された特徴を活用する。
一般的にKotlin Multiplatformプロジェクトでは、コードを複数のプラットフォーム(例: JVM、Android、iOS、JavaScript)で共有する。しかし、各プラットフォームごとに特定の実装が必要な場合がある。このような場合に、expectとactualキーワードを使用して、プラットフォームごとに異なる実装を提供できる。
- expect
expectキーワードは、特定のインターフェース、クラス、または関数がプラットフォームでどのように実装されるべきかを宣言するために使用される。- つまり、期待される実装を定義する。これは一般的に共有コードで使用され、特定のプラットフォームで提供されるべきAPIを定義するために使用される。
- actual
actualキーワードはexpectキーワードと対応し、実際にそのインターフェース、クラス、または関数の具体的な実装を提供する。- これはプラットフォームごとに提供される特定の実装である。したがって、各プラットフォームに対して特定のコードを記述できる。
次は、expectとactualキーワードを使用して、プラットフォームごとに異なる実装を提供する簡単な例である。
// common module
expect fun platformSpecificFunction(): String
// JVM module
actual fun platformSpecificFunction(): String {
return "This is the JVM implementation"
}
// iOS module
actual fun platformSpecificFunction(): String {
return "This is the iOS implementation"
}
// Usage
fun main() {
println(platformSpecificFunction()) // Output depends on the platform
}
上の例でplatformSpecificFunctionは共有(common)モジュールでexpectとして宣言されている。そして各プラットフォームに応じた実際の実装は、actualキーワードを使用して提供される。これにより、各プラットフォームで実行するたびに適切な実装が使用される。