Kotlin
Birleştirme
Kütüphane sınıfını menü döngüsüyle birleştirirsin.
Birleştirme
Son derste tüm parçaları bir when ifadesiyle birleştirirsin. when (command) { "checkout" -> lib.checkout("M1", "978-1"); "return" -> lib.returnBook("978-1"); "list" -> lib.books.forEach { println(it) } } biçiminde bir komut işleyici yazılır.
Her dal farklı bir işlemi temsil eder: checkout ödünç verir, return iade alır, list tüm kitapları yazdırır. command değişkeni hangi dalın çalışacağını belirler; yalnızca eşleşen dal yürütülür. Böylece kütüphane uygulaması bir komut döngüsüne hazır hale gelir.
Komut işleyici
Tüm uygulama bir araya gelir: Library sınıfı kitap, üye, ödünç ve arama yönetimini taşır; main bir komut alır ve when ile ilgili metodu çağırır. Örnek: val command = "checkout"; when (command) { "checkout" -> lib.checkout("M1", "978-1") }.
Bu yapıyı bir döngüye alarak kullanıcıdan komut okuyan gerçek bir konsol uygulamasına dönüştürebilirsin. Şimdilik tek komut işleyerek akışı test ediyorsun. Derste checkout komutu çalışacak ve ekrana ödünç mesajı yazılacak.
Uygulama when ile komut işle
main içinde bir Library oluştur, bir kitap ve bir üye ekle. val command = "checkout" tanımla ve when (command) ile üç dal yaz: "checkout" -> lib.checkout("M1", "978-1"), "return" -> lib.returnBook("978-1"), "list" -> lib.books.forEach { println(it) }. Önceki derslerin Library sınıfı tanımlı kalsın.
Örnek çözümü göster
data class Book(val title: String, val author: String, val isbn: String)
data class Member(val name: String, val id: String)
class Library {
val books = mutableListOf<Book>()
val members = mutableListOf<Member>()
val borrowed = mutableMapOf<String, String>()
fun addBook(book: Book) { books.add(book) }
fun addMember(member: Member) { members.add(member) }
fun checkout(memberId: String, isbn: String) {
borrowed[isbn] = memberId
println("Ödünç: $memberId -> $isbn")
}
fun returnBook(isbn: String) {
borrowed.remove(isbn)
println("İade: $isbn")
}
fun searchByAuthor(author: String): List<Book> = books.filter { it.author == author }
fun availableBooks(): List<Book> = books.filter { it.isbn !in borrowed }
}
fun main() {
val lib = Library()
lib.addBook(Book("Suç ve Ceza", "Dostoyevski", "978-1"))
lib.addMember(Member("Ayşe", "M1"))
val command = "checkout"
when (command) {
"checkout" -> lib.checkout("M1", "978-1")
"return" -> lib.returnBook("978-1")
"list" -> lib.books.forEach { println(it) }
}
}
Kendini test et
-
when dallarını eşle
- "checkout"
- Ödünç ver
- "return"
- İade al
- "list"
- Listele
- when (command)
- Komut seç
-
when (command) { "checkout" -> ... } ne yapar?
- Hiçbir şey yapmaz
- Tüm dalları çalıştırır
- Eşleşen komutun dalını çalıştırır
- Yalnızca ilk dalı çalıştırır
Cevabı göster
Eşleşen komutun dalını çalıştırır — when yalnızca eşleşen dalı yürütür.
-
when dalını tamamla
when (command) {
"checkout" -> lib.____("M1", "978-1")
}
Cevabı göster
when (command) {
"checkout" -> lib.checkout("M1", "978-1")
}
Sıradaki ders: map ve filter