CodeBlanks Logo Icon CodeBlanks

Görev listeleme

listTasks ile görevleri formatlı yazdırmayı öğrenirsin.

Görev listeleme: listTasks metodu

Şimdi TodoList'e görevleri okunabilir biçimde yazdıran bir listTasks metodu ekleyeceğiz. Bu metot, tasks üzerinde forEach ile dolaşıp her görevin format() çıktısını yazdırır.

fun listTasks() {
    tasks.forEach { println(it.format()) }
}

Bu metot sayesinde ana kod sade kalır: list.listTasks() tek satırda tüm görevleri yazar. forEach'in lambda'sında her eleman it olarak bilinir.

it ve forEach

forEach'in lambda'sında tek parametre otomatik olarak it adını alır. tasks.forEach { println(it.format()) } içinde it sıradaki Task'tir; it.format() onun okunabilir çıktısını verir.

tasks.forEach { task ->
    println(task.format())
}

İstersen açık bir ad da verebilirsin: { task -> ... }. it'in yeterli olmadığı iç içe lambda'larda açık ad okunabilirliği artırır.

Uygulama listTasks metodunu ekle ve çağır

TodoList'e fun listTasks() { tasks.forEach { println(it.format()) } } metodunu ekle. main içinde bir TodoList oluştur, iki görev ekle ve list.listTasks() ile yazdır.

Başlangıç kodu

Main.kt
fun main() {
    val list = TodoList()
    list.addTask("Alışveriş")
    list.addTask("Ödev")
    // listTasks metodunu main içinde çağır
}

// Task ve TodoList sınıfları önceki derslerde tanımlandığı gibi durur.
// listTasks metodunu TodoList içine ekle: forEach ile format çıktısını yazdır.

Örnek çözüm

Main.kt
fun main() {
    val list = TodoList()
    list.addTask("Alışveriş")
    list.addTask("Ödev")
    list.listTasks()
}

data class Task(val title: String, val done: Boolean = false) {
    fun format() = if (done) "[x] $title" else "[ ] $title"
}

class TodoList {
    val tasks = mutableListOf<Task>()
    fun addTask(title: String) {
        tasks.add(Task(title))
    }
    fun listTasks() {
        tasks.forEach { println(it.format()) }
    }
}

Beklenen çıktı

[ ] Alışveriş
[ ] Ödev

Soru ve cevaplar

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

1 listTasks metodunun dönüş türü ne olmalı?

  • Unit (yalnızca yazdırır) Doğru cevap
  • List<Task>
  • Int (sayı)
  • String

Açıklama: listTasks yalnızca yazdırır; değer döndürmez, bu yüzden Unit'tir.

2 İfadeyi rolüyle eşleştir

Kavram Anlamı
listTasks() Tüm görevleri yazdırır
forEach { } Her görevi gezer
it.format() Görevin çıktısı
println(...) Ekrana yazar

3 Boşluğu doldur: her görevi gez

Soru
tasks.____ { println(it.format()) }
Cevap
tasks.forEach { println(it.format()) }

Açıklama: tasks.forEach { } her görevi gezer.

Başlangıç bölümündeki tüm dersler