Dart
Arama ve filtreleme
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.
Örnek çözümü göster
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);
}
Kendini test et
-
where çağrısı
List<Book> search(String query) {
return books.____((b) => b.title.contains(query)).toList();
}
Cevabı göster
List<Book> search(String query) {
return books.where((b) => b.title.contains(query)).toList();
}
-
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)
Cevabı göster
bool (true veya false) — contains bir bool döndürür: bulunursa true, yoksa false.
-
search parçalarını eşleştir
- String query
- Sorgu parametresi
- .where(...)
- Süzme
- .contains(query)
- Başlıkta arama
- .toList()
- Listeye çevirme
Sıradaki ders: Birleştirme