CodeBlanks Logo Icon CodeBlanks

Inline

inline ile fonksiyon çağrı optimizasyonu öğrenirsin.

inline nedir?

inline, bir fonksiyonun gövdesini çağrı yerine doğrudan koda gömen anahtar kelimedir. Çağrı maliyetini (overhead) ve lambda allocation'ı önler.

Örnek: inline fun measure(block: () -> Unit) { block() }. normalde block bir nesne olarak yaratılır; inline'da gövde doğrudan yerleştirilir, nesne oluşmaz. Bu özellikle yüksek dereceli (higher-order) fonksiyonlarda faydalıdır. Aşırı kullanım metot boyutunu büyütür; sıcak yollarda kullanılır.

inline ve lambda

inline, yüksek dereceli fonksiyonlarda lambda allocation'ı kaldırır. Lambda gövdesi doğrudan çağrı yerine konur.

Örnek: inline fun doubleIt(x: Int): Int = x * 2. Çağrı doubleIt(5) derleme sonunda 5 * 2'ye dönüşür. Bu, sıcak döngülerde çağrı maliyetini sıfırlar. reified tür parametresi de yalnızca inline fonksiyonlarda kullanılabilir; bu, çalışma zamanında tür erişimi sağlar.

Uygulama doubleIt yaz

inline fun doubleIt(x: Int): Int tanımla. x * 2 döndürsün. main içinde println(doubleIt(5)) yaz.

Başlangıç kodu

Main.kt
// doubleIt fonksiyonunu ekle

fun main() {
    // doubleIt(5) sonucunu yazdır
}

Örnek çözüm

Main.kt
inline fun doubleIt(x: Int): Int = x * 2
fun main() {
    println(doubleIt(5))
}

Beklenen çıktı

10

Soru ve cevaplar

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

1 inline parçalarını eşle

Kavram Anlamı
inline Çağrıyı gömme
call site Çağrı yeri
lambda Yardımcı fonksiyon
overhead Çağrı maliyeti

2 inline en çok neyi önler?

Main.kt
inline is most useful with lambdas.
  • Lambda allocation ve çağrı maliyeti Doğru cevap
  • Sınıf yükleme
  • Disk G/Ç
  • Bellek sızıntısı

Açıklama: inline lambda allocation'ı ve çağrı maliyetini önler.

3 inline bildirimini tamamla

Soru
____ fun measure(block: () -> Unit) { block() }
Cevap
inline fun measure(block: () -> Unit) { block() }

Açıklama: inline fun measure gövdeyi çağrı yerine gömer.

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