CodeBlanks Logo Icon CodeBlanks

Özet - Yüksek dereceli fonksiyonlar

lambda, it ve scope function'ları birleştirerek bir işlem hattı yazarsın.

Özet - Yüksek dereceli fonksiyonlar

Bu grupta fonksiyon türü, lambda, it, inline ve scope function'ları öğrendin. Hepsi fonksiyonları değer olarak taşır ve kısa kod yazmayı sağlar.

Bu özette bir işlem hattı yazacaksın: bir listedeki sayıları süz, dönüştür ve topla. filter, map ve sum chain halinde kullanılır. Tüm parçalar bir araya geldiğinde kısa ve okunaklı bir işlem hattı oluşur.

Uygulama filter-map-sum işlem hattı

val nums = listOf(1, 2, 3, 4, 5) bildir. val result = nums.filter { it % 2 == 0 }.map { it * 10 }.sum() bildir. main içinde println(result) çağrısı yapsın.

Başlangıç kodu

Main.kt
// nums listesi
// filter, map ve sum ile işlem hattı
// main'de sonucu yazdır

Örnek çözüm

Main.kt
val nums = listOf(1, 2, 3, 4, 5)
val result = nums.filter { it % 2 == 0 }.map { it * 10 }.sum()

fun main() {
    println(result)
}

Beklenen çıktı

60

Uygulama apply ile liste yapılandırma

val list = mutableListOf<Int>().apply { add(10); add(20); add(30) } bildir. main içinde println(list) çağrısı yapsın.

Başlangıç kodu

Main.kt
// list: apply ile 10, 20, 30 ekle
// apply nesneyi döndürür
// main'de listeyi yazdır

Örnek çözüm

Main.kt
val list = mutableListOf<Int>().apply { add(10); add(20); add(30) }

fun main() {
    println(list)
}

Beklenen çıktı

[10, 20, 30]

Soru ve cevaplar

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

1 Bir işlem hattında <code>filter</code>, <code>map</code> ve <code>sum</code> neden chain halinde kullanılır?

Main.kt
Each chain step returns a list; the next step takes it.
  • Çünkü her biri ayrı değişken gerektirir
  • Her adım bir öncekinin sonucunu alıp yeni sonuç ürettiği için Doğru cevap
  • Çünkü chain olmadan derlenmezler
  • Çünkü sadece Int ile çalışırlar

Açıklama: Her adım bir liste döndürür; sonraki adım onu alır.

2 fonksiyon türü tanımını tamamla

Soru
val format: (Int) ____ String = { n -> "Sayı: $n" }
Cevap
val format: (Int) -> String = { n -> "Sayı: $n" }

Açıklama: -> dönüş türünü belirtir.

Orta seviye bölümündeki tüm dersler