Birleştirme
- Kotlin kursu
- Orta seviye
- Ders 63/116
- 6 dk
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.
Başlangıç kodu
fun main() {
val lib = Library()
lib.addBook(Book("Suç ve Ceza", "Dostoyevski", "978-1"))
lib.addMember(Member("Ayşe", "M1"))
// when ile komutu işle ve sonucu yazdır
}
// Book, Member ve Library sınıfları önceki derslerde tanımlandığı gibi durur.
// Library: books, members, borrowed, addBook, addMember, checkout, returnBook, searchByAuthor, availableBooksÖrnek çözüm
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) }
}
}Beklenen çıktı
Ödünç: M1 -> 978-1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 when dallarını eşle
| Kavram | Anlamı |
|---|---|
"checkout" |
Ödünç ver |
"return" |
İade al |
"list" |
Listele |
when (command) |
Komut seç |
2 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 Doğru cevap
- Yalnızca ilk dalı çalıştırır
Açıklama: when yalnızca eşleşen dalı yürütür.
3 when dalını tamamla
when (command) {
"checkout" -> lib.____("M1", "978-1")
}
when (command) {
"checkout" -> lib.checkout("M1", "978-1")
}
Açıklama: checkout dalı ödünç verme metodunu çağırır.