CodeBlanks Logo Icon CodeBlanks

Özet - Fonksiyonel programlama

immutability, Sequence ve Result'ı birleştirerek bir fonksiyonel işlem hattı yazarsın.

Özet - Fonksiyonel programlama

Bu grupta fonksiyonel programlamanın temel kavramlarını gördün: data class ile immutability, saf fonksiyonlar, Sequence ile tembellik, fold ile accumulation ve Result ile monad yaklaşımı.

Bu ders, üçünü birleştiren küçük bir görev içerir: bir data class tanımlayıp fold ile toplam hesaplayacaksın. Bu kalıp, fonksiyonel Kotlin'in temelini oluşturur.

Uygulama Özet: Product ve fold

Product(val name: String, val price: Int) adında data class tanımla. main içinde üç ürün listesi oluştur, fold(0) { acc, p -> acc + p.price } ile toplam fiyatı hesapla ve println ile yazdır.

Başlangıç kodu

Main.kt
// Product data class: name ve price özellikleri
// main'de üç ürün listele, fold ile toplam fiyatı yazdır

Örnek çözüm

Main.kt
data class Product(val name: String, val price: Int)

fun main() {
    val items = listOf(
        Product("Ekmek", 20),
        Product("Süt", 15),
        Product("Çay", 25)
    )
    val total = items.fold(0) { acc, p -> acc + p.price }
    println(total)
}

Beklenen çıktı

60

Soru ve cevaplar

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

1 Aşağıdakilerden hangisi fonksiyonel programlamanın temel özelliğidir?

  • Değişmez (immutable) veri Doğru cevap
  • Yan etki böl olması
  • Global durumu sık değiştirme
  • Döngülerin her yere yayılması

Açıklama: Immutability fonksiyonel programlamanın temelidir.

2 FP kavramlarını eşle

Kavram Anlamı
data class Immutability
fun double(n) Saf fonksiyon
asSequence() Tembellik
fold(0) Accumulation

3 fold çağrısını tamamla

Soru
val total = items.____(0) { acc, item -> acc + item.price }
Cevap
val total = items.fold(0) { acc, item -> acc + item.price }

Açıklama: fold başlangıç değeriyle accumulation yapar.

İleri seviye bölümündeki tüm dersler