Inline
- Kotlin kursu
- Uzman
- Ders 39/47
- 5 dk
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
// doubleIt fonksiyonunu ekle
fun main() {
// doubleIt(5) sonucunu yazdır
}Örnek çözüm
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?
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
____ fun measure(block: () -> Unit) { block() }
inline fun measure(block: () -> Unit) { block() }
Açıklama: inline fun measure gövdeyi çağrı yerine gömer.