CodeBlanks Logo Icon CodeBlanks

KSP

KSP ile kod üretimi yazarsın.

KSP ile kod üretimi

Üçüncü ders, KSP (Kotlin Symbol Processing) ile kod üretimini temsil eder. KSP derleme zamanında annotation'ları okur ve kod üretir.

Modelimizde @AutoBuilder annotation'ı bir sınıfı işaretler; KSP o sınıf için bir builder üretir. Biz bu derste builder'ı elle yazarak konsepti modelliyoruz: annotation class AutoBuilder ve class NoteBuilder. Builder, Note yaratmayı adım adım yapar. Bu, gerçek KSP akışının eldeki hali.

NoteBuilder modeli

NoteBuilder, KSP'nin üreteceği builder'ın eldeki halidir. var alanları adım adım doldurulur; build() metodu son Note'u üretir.

Örnek: class NoteBuilder { var id = 0; var title = ""; fun build(): Note = Note(id, title) }. Kullanım: val b = NoteBuilder(); b.title = "KSP"; b.build(). Bu, fluent builder deseninin temelidir. Gerçek KSP bu sınıfı otomatik üretir; biz model olarak elle yazdık.

Uygulama AutoBuilder ve NoteBuilder ekle

annotation class AutoBuilder tanımla. class NoteBuilder tanımla: var id = 0, var title = "", fun build(): Note = Note(id, title). main içinde val b = NoteBuilder(); b.title = "KSP" yapıp println(b.build().title) yaz.

Başlangıç kodu

Main.kt
object App {
    fun run(): String = "Expert Notes"
}

data class Note(val id: Int, val title: String)

// @AutoBuilder annotation ve NoteBuilder sınıfını ekle

fun main() {
    // NoteBuilder ile bir Note oluştur ve yazdır
}

Örnek çözüm

Main.kt
object App {
    fun run(): String = "Expert Notes"
}

data class Note(val id: Int, val title: String)

annotation class AutoBuilder

class NoteBuilder {
    var id = 0
    var title = ""
    fun build(): Note = Note(id, title)
}

fun main() {
    val b = NoteBuilder()
    b.title = "KSP"
    println(b.build().title)
}

Beklenen çıktı

KSP

Soru ve cevaplar

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

1 KSP ne zaman çalışır?

Main.kt
KSP runs during compilation.
  • Çalışma zamanı
  • Yükleme zamanı
  • Derleme zamanı Doğru cevap
  • Kapanışta

Açıklama: KSP derleme zamanında annotation'ları işler.

2 annotation bildirimini tamamla

Soru
annotation class ____
Cevap
annotation class AutoBuilder

Açıklama: annotation class AutoBuilder bir sınıfı işaretler.

3 KSP parçalarını eşle

Kavram Anlamı
KSP Sembol işleme
@AutoBuilder İşaretçi
NoteBuilder Builder modeli
build() Üretim metodu

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