Kotlin
IR
Kotlin IR (Intermediate Representation) öğrenirsin.
IR nedir?
IR (Intermediate Representation), Kotlin derleyicisinin iç şunumudur; kaynak kodun ağaç biçiminde modellenmiş halidir. Tüm backend'ler (JVM, JS, Native) aynı IR'yi kullanır.
Bir IR dönüşümü, IrElementTransformerVoidWithContext gibi sınıflardan türer. Dönüştürücü, her düğümü ziyaret eder ve değiştirebilir. Örnek: override fun visitCall(expression: IrCall): IrExpression. Bu yapı, derleyici plugin'lerinin standart yoludur; Compose plugin'i IR ile çalışır. IR dönüşümleri karmaşık ama güçlüdür; derleme zamanında davranışı değiştirebilir.
IR ziyaretçi deseni
IR dönüştürücüleri ziyaretçi deseni (visitor pattern) ile çalışır. Her düğüm türü için ayrı bir visitX metodu çağrılır.
Örnek: visitCall fonksiyon çağrılarını, visitProperty özellikleri, visitClass sınıf tanımlarını işler. Dönüşüm sırasında orijinal düğümü değiştirmek yerine yeni bir düğüm döndürmek yaygındır; bu, yan etkileri azaltır. IR'nin tür güvenliği sayesinde yanlış dönüşümler derleme sırasında yakalanır. Bu dersin basit modelinde IrElement ve IrTransformer sınıflarıyla dönüşümün nasıl göründüğünü göstereceğiz.
Uygulama IrTransformer yaz
class IrElement(val name: String) tanımla. class IrTransformer içinde fun transform(el: IrElement): String metodu "ir:${'$'}{el.name}" döndürsün. main içinde bir IrElement("main") oluştur, IrTransformer().transform(...) çağrısının sonucunu yazdır.
Örnek çözümü göster
class IrElement(val name: String)
class IrTransformer {
fun transform(el: IrElement): String = "ir:${el.name}"
}
fun main() {
val t = IrTransformer()
println(t.transform(IrElement("main")))
}
Kendini test et
-
transform metodunu tamamla
class IrTransformer {
fun ____(el: IrElement): String = "ir:${'$'}{el.name}"
}
Cevabı göster
class IrTransformer {
fun transform(el: IrElement): String = "ir:${'$'}{el.name}"
}
-
IR parçalarını eşle
- IrElement
- Düğüm temeli
- IrTransformer
- Dönüştürücü
- visitCall
- Çağrı ziyareti
- IrCall
- Çağrı düğümü
-
IR dönüştürücüleri hangi deseni kullanır?
- Singleton
- Factory
- Observer
- Ziyaretçi (visitor)
Cevabı göster
Ziyaretçi (visitor) — IR dönüştürücüleri ziyaretçi deseniyle her düğüm türünü ayrı işler.
Sıradaki ders: Plugin vs KSP