KSP
- Kotlin kursu
- Uzman
- Ders 45/47
- 6 dk
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
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
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?
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
annotation class ____
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 |