CodeBlanks Logo Icon CodeBlanks

expect/actual

expect/actual ile platform kodu öğrenirsin.

expect/actual nedir?

expect/actual, KMP'de platforma özgü kodu yöneten mekanizmadır. expect commonMain'de bir sözleşme bildirir; her hedef actual ile onu uygular.

Örneğin expect fun platformName(): String commonMain'de yazılır. iOS hedefinde actual fun platformName(): String = "iOS", JVM hedefinde actual fun platformName(): String = "JVM" tanımlanır. Derleyici her hedef için doğru actual'i seçer. Bu sayede paylaşılan kod, platformu bilmeden bu fonksiyonu çağırabilir.

actual uygulama örneği

Bir actual uygulama, hedefin kaynak kümesinde yazılır. JVM hedefinde jvmMain, iOS hedefinde iosMain gibi.

Örnek: actual fun platformName(): String = "JVM". actual bildirimin imzası expect ile birebir aynı olmalıdır; tür, parametre ve isim uyumlu olmalıdır. Aksi halde derleyici hata verir. Bu katılık, paylaşılan kodun her hedefde tutarlı çalışmasını sağlar. Bu derste kavramı bir platformName fonksiyonuyla modelleyeceğiz.

Uygulama platformName yaz

fun platformName(): String tanımla. "JVM" döndürsün. main içinde println(platformName()) yaz.

Başlangıç kodu

Main.kt
// platformName fonksiyonunu ekle

fun main() {
    // platform adını yazdır
}

Örnek çözüm

Main.kt
fun platformName(): String = "JVM"
fun main() {
    println(platformName())
}

Beklenen çıktı

JVM

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 expect/actual parçalarını eşle

Kavram Anlamı
expect fun commonMain'de sözleşme
actual fun hedef kümede uygulama
expect val commonMain'de sabit
actual val hedef kümede değer

2 actual anahtar kelimesi nereye yazılır?

Main.kt
actual is target-specific.
  • iosMain Doğru cevap
  • commonMain
  • build.gradle
  • test

Açıklama: actual, hedefin kaynak kümesine yazılır; örn. iosMain.

3 actual bildirimini tamamla

Soru
____ fun log(msg: String) { println(msg) }
Cevap
actual fun log(msg: String) { println(msg) }

Açıklama: actual, hedef kümesinde log fonksiyonunu uygular.

Uzman bölümündeki tüm dersler