Görev listeleme
- Kotlin kursu
- Başlangıç
- Ders 85/116
- 6 dk
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
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
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
tasks.____ { println(it.format()) }
tasks.forEach { println(it.format()) }
Açıklama: tasks.forEach { } her görevi gezer.