expect dan actual
Pelaksanaan khusus platform
expect dan actual ialah pelajaran Kotlin Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kotlin Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.
Keperluan untuk Kod Platform
Sesetengah fungsi tidak mempunyai pelaksanaan umum — mendapatkan nama OS, UUID atau platform semasa. KMM menyelesaikan masalah ini dengan mekanisme expect/actual.
Pengisytiharan expect
Dalam commonMain, anda mengisytiharkan fungsi atau kelas expect — kontrak tanpa badan. Kod umum boleh memanggilnya.
// commonMain
expect fun platformName(): Stringactual pada Android
Setiap platform menyediakan pelaksanaan actual yang sepadan dengan tandatangan tersebut.
// androidMain
actual fun platformName(): String = "Android " + android.os.Build.VERSION.SDK_INTactual pada iOS
Set sumber iOS menyediakan versinya sendiri dengan menggunakan antara muka pengaturcaraan aplikasi natif.
// iosMain
import platform.UIKit.UIDevice
actual fun platformName(): String =
UIDevice.currentDevice.systemName + " " + UIDevice.currentDevice.systemVersionMenggunakannya dalam Kod Umum
Kod umum memanggil fungsi expect seolah-olah fungsi itu wujud; pengkompil memautkan actual yang betul untuk setiap sasaran.
// commonMain
class Platform {
val name: String get() = platformName()
}Kelas expect
Anda boleh menjangkakan seluruh kelas. Setiap platform menyediakan kelas actual dengan ahli yang sepadan.
// commonMain
expect class FileReader(path: String) {
fun read(): String
}Pelaksanaan Kelas actual
Platform melaksanakan kelas expect menggunakan antara muka pengaturcaraan aplikasi fail natif (contohnya Java IO pada Android dan Foundation pada iOS).
// androidMain
actual class FileReader actual constructor(private val path: String) {
actual fun read(): String = java.io.File(path).readText()
}expect dengan typealias
actual boleh berupa typealias kepada jenis platform sedia ada, sekali gus mengelakkan pembungkus.
// commonMain
expect class Uuid
// jvm/androidMain
actual typealias Uuid = java.util.UUIDPeraturan Padanan Tandatangan
actual mesti sepadan dengan expect secara tepat: nama, parameter dan jenis pulangan yang sama. Ketidakpadanan ialah ralat kompilasi yang menjamin keseragaman merentas platform.
Bila Tidak Menggunakan expect/actual
Utamakan antara muka dengan pelaksanaan platform yang disuntik semasa masa jalan apabila abstraksi lebih fleksibel. Simpan expect/actual untuk primitif platform yang kecil dan tetap.
Ilustrasi Kod Umum
Di luar KMM, idea yang sama hanyalah memanggil abstraksi. Di sini, fungsi biasa menggantikan panggilan platform.
fun platformName(): String = "Demo Platform"
fun main() {
println("Running on " + platformName())
}Semakan Pantas
Di manakah pengisytiharan expect ditulis, dan di manakah pelaksanaan actualnya?
Ringkasan
expect/actual merapatkan jurang antara platform:
expectmengisytiharkan kontrak dalamcommonMainactualmelaksanakannya untuk setiap platform (atau melaluitypealias)- Tandatangan mesti sepadan dengan tepat
- Utamakan antara muka untuk abstraksi yang fleksibel
Seterusnya: berkongsi logik perniagaan.
Pelajari Kotlin dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “expect dan actual” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kotlin Academy, termasuk “expect dan actual”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “expect dan actual”?
Pelaksanaan khusus platform Anda berlatih Kotlin Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kotlin Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kotlin Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “expect dan actual” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kotlin Academy ini?
Ya. Setiap pelajaran Kotlin Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Struktur projek KMM
- expect dan actual
- Berkongsi logik perniagaan
- API platform