inline
- Kotlin kursu
- Orta seviye
- Ders 56/116
- 5 dk
inline ile performans optimizasyonu öğrenirsin.
inline
inline anahtar kelimesi, fonksiyonun çağrıldığı yere doğrudan gömülmesini sağlar. Higher-order fonksiyonlarda lambda oluşturma yükünü azaltır.
Örnek: inline fun repeatN(times: Int, action: (Int) -> Unit) { for (i in 1..times) action(i) }. repeatN(3) { println("Tekrar $it") } çağrısı üç kez yazdırır. inline sayesinde lambda nesnesi oluşturulmaz; kod çağrı noktasına gömülür. Bu, performans için yararlıdır. Ama her inline fonksiyon kod boyutunu artırabilir; küçük fonksiyonlarda kullanılır.
repeatN fonksiyonu
Bir inline higher-order fonksiyon, lambda'yı çağrı noktasına gömer. action(i) çağrısı derleme zamanında genişletilir.
Örnek: inline fun repeatN(times: Int, action: (Int) -> Unit) { for (i in 1..times) action(i) }. repeatN(3) { println("Tekrar $it") } çağrısı Tekrar 1
Tekrar 2
Tekrar 3 yazdırır. it lambda'nın tek parametresidir. inline fonksiyonlar özellikle koleksiyon metotlarında yaygın kullanılır; forEach, map, filter standart kütüphanede inline'dır.
Uygulama repeatN inline fonksiyonu
inline fun repeatN(times: Int, action: (Int) -> Unit) fonksiyonunu tanımla; gövdesi for (i in 1..times) action(i) yapsın. main içinde repeatN(3) { println("Tekrar $it") } çağrısı yapsın.
Başlangıç kodu
// repeatN inline fonksiyon tanımı
// times ve action alır, for ile döner
// main'de üç kez çağırÖrnek çözüm
inline fun repeatN(times: Int, action: (Int) -> Unit) {
for (i in 1..times) action(i)
}
fun main() {
repeatN(3) { println("Tekrar $it") }
}Beklenen çıktı
Tekrar 1 Tekrar 2 Tekrar 3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>inline</code> anahtar kelimesi ne sağlar?
- Fonksiyonun gizlenmesini
- Fonksiyonun sabitlenmesini
- Fonksiyonun özyinelemesini
- Fonksiyon gövdesinin çağrı noktasına gömülmesini Doğru cevap
Açıklama: inline fonksiyon gövdesini çağrı noktasına gömer.
2 inline parçalarını eşle
| Kavram | Anlamı |
|---|---|
inline fun repeatN |
inline imza |
action: (Int) -> Unit |
Fonksiyon parametresi |
for (i in 1..times) |
Döngü |
action(i) |
Lambda çağrısı |
3 inline fonksiyon tanımını tamamla
inline ____ repeatN(times: Int, action: (Int) -> Unit) {
for (i in 1..times) action(i)
}
inline fun repeatN(times: Int, action: (Int) -> Unit) {
for (i in 1..times) action(i)
}
Açıklama: inline fun repeatN biçiminde yazılır.