Arama ve filtreleme
- Dart kursu
- Orta seviye
- Ders 56/116
- 6 dk
Koleksiyon metotlarıyla arama ve filtreleme yazarsın.
search metodu
Kitaplarda arama yapmak için search metodunu yazacağız. Bu metot, bir sorgu metni alır ve başlığında o metni içeren kitapları döndürür. where ve contains kullanır.
Örnek: List<Book> search(String query) { return books.where((b) => b.title.contains(query)).toList(); }. Burada where her kitabı süzer; b.title.contains(query) başlıkta sorgu metni var mı kontrol eder.
Sonuç bir List<Book>'tur. toList() tembel Iterable'ı somut listeye çevirir. Bu metot, kullanıcının girdiği anahtar kelimeyle kitap bulmasını sağlar.
Arama sonuçu
search metodu bir List<Book> döndürür. Sonucun uzunluğu kaç kitap bulunduğunu verir. Örneğin üç kitaptan ikisi sorguyu içeriyorsa results.length 2 olur.
Örnek: var results = lib.search('ve');. Eğer 'Suç ve Ceza' ve 'Savaş ve Barış' ekliyse ikisi de 've' içerir; sonuç 2 kitap. print(results.length) 2 verir.
Bu metot, kütüphane uygulamasının kullanıcıya en yararlı özelliğidir. Binlerce kitap arasından saniyede sonuç verir.
Uygulama search metodunu ekle
Library sınıfına List<Book> search(String query) metodunu ekle. Metot books.where((b) => b.title.contains(query)).toList() döndürsün. main zaten üç kitap ekliyor ve lib.search('ve') çağırıyor; sonuçun length'ini yazdırıyor.
Başlangıç kodu
class Book {
String title;
bool borrowed = false;
Book(this.title);
}
class Library {
List<Book> books = [];
void addBook(Book b) {
books.add(b);
}
void checkout(int index) {
books[index].borrowed = true;
}
void returnBook(int index) {
books[index].borrowed = false;
}
// search metodunu ekle
}
void main() {
var lib = Library();
lib.addBook(Book('Sefiller'));
lib.addBook(Book('Suç ve Ceza'));
lib.addBook(Book('Savaş ve Barış'));
var results = lib.search('ve');
print(results.length);
}Örnek çözüm
class Book {
String title;
bool borrowed = false;
Book(this.title);
}
class Library {
List<Book> books = [];
void addBook(Book b) {
books.add(b);
}
void checkout(int index) {
books[index].borrowed = true;
}
void returnBook(int index) {
books[index].borrowed = false;
}
List<Book> search(String query) {
return books.where((b) => b.title.contains(query)).toList();
}
}
void main() {
var lib = Library();
lib.addBook(Book('Sefiller'));
lib.addBook(Book('Suç ve Ceza'));
lib.addBook(Book('Savaş ve Barış'));
var results = lib.search('ve');
print(results.length);
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 where çağrısı
List<Book> search(String query) {
return books.____((b) => b.title.contains(query)).toList();
}
List<Book> search(String query) {
return books.where((b) => b.title.contains(query)).toList();
}
Açıklama: where koşula göre süzer.
2 b.title.contains(query) ne döndürür?
var b = Book('Suç ve Ceza');
var r = b.title.contains('Ceza');- Bir liste
- void
- Hata fırlatır
- bool (true veya false) Doğru cevap
Açıklama: contains bir bool döndürür: bulunursa true, yoksa false.
3 search parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
String query |
Sorgu parametresi |
.where(...) |
Süzme |
.contains(query) |
Başlıkta arama |
.toList() |
Listeye çevirme |