'firstWhere' ile Bulma
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 15 / 65.
Bir listede belirli kriterleri karşılayan özel bir öğe bulmanız gerektiğinde, firstWhere() yöntemi verimli bir çözüm sunar. Eşleşen tüm öğeleri döndüren filtreleme yöntemlerinin aksine, firstWhere() koşulunuzu sağlayan ilk öğeyi bulur bulmaz aramayı durdurur.
firstWhere() yöntemi, her bir öğe için true veya false döndüren bir test fonksiyonu alır. Testi geçen ilk öğeyi bulana kadar öğeleri tek tek inceler ve ardından hemen o öğeyi döndürür.
List<int> numbers = [1, 3, 8, 15, 22, 7];
// İlk çift sayıyı bul
int firstEven = numbers.firstWhere((number) => number % 2 == 0);
print(firstEven); // 8Hiçbir öğenin koşulunuzla eşleşmediği durumlar için firstWhere(), isteğe bağlı bir orElse parametresi sunar. Bu parametre, eşleşme bulunamadığında varsayılan bir değer döndüren bir fonksiyonu kabul ederek programınızın bir hatayla çökmesini önler.
Görev
KolayAcil müdahale gerektiren ilk müşteri şikâyetini bularak bir müşteri hizmetleri sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Bölüm adını temsil eden bir dize girdisi okuyun
- Şikâyet öncelik düzeylerini temsil eden birden çok tamsayı girdisi okuyun (girdi,
-1alındığında sona erecektir) - Acil öncelik eşiğini temsil eden bir tamsayı girdisi okuyun
- Acil eşikten büyük veya eşit öncelik düzeyine sahip ilk şikâyeti bulmak için
firstWhere()yöntemini kullanın - Müşteri hizmetleri sonuçlarını aşağıda gösterilen tam biçimde yazdırın
Örneğin, bölüm adı "Technical Support", öncelik düzeyleri 3, 7, 2, 9, 4 ve acil eşik 8 ise programınız şu çıktıyı vermelidir:
Department: Technical Support
All complaints: [3, 7, 2, 9, 4]
Urgent threshold: 8
Searching for first complaint >= 8
First urgent complaint: 9
Status: Urgent complaint found - immediate action requiredBölüm adı "Billing Department", öncelik düzeyleri 4, 6, 3, 5 ve acil eşik 7 ise programınız şu çıktıyı vermelidir:
Department: Billing Department
All complaints: [4, 6, 3, 5]
Urgent threshold: 7
Searching for first complaint >= 7
First urgent complaint: Not found
Status: No urgent complaints - continue normal processingBölüm adı "Sales Support", öncelik düzeyleri 10, 2, 8 ve acil eşik 9 ise programınız şu çıktıyı vermelidir:
Department: Sales Support
All complaints: [10, 2, 8]
Urgent threshold: 9
Searching for first complaint >= 9
First urgent complaint: 10
Status: Urgent complaint found - immediate action requiredProgramınız, acil eşikten büyük veya eşit olan ilk şikâyet önceliğini bulmak için firstWhere() yöntemini kullanmalıdır. Acil bir şikâyet bulunamazsa ilk acil şikâyet için "Not found" görüntüleyin ve durum olarak "No urgent complaints - continue normal processing" gösterin. Acil bir şikâyet bulunursa öncelik düzeyini görüntüleyin ve durum olarak "Urgent complaint found - immediate action required" gösterin.
Kendin dene
import 'dart:io';
void main() {
// Departman adını oku
String? department = stdin.readLineSync();
// -1 gelene kadar şikayet öncelik seviyelerini oku
List<int> complaints = [];
while (true) {
int priority = int.parse(stdin.readLineSync()!);
if (priority == -1) break;
complaints.add(priority);
}
// Acil durum eşiğini oku
int urgentThreshold = int.parse(stdin.readLineSync()!);
// TODO: Kodunuzu aşağıya yazın
// urgentThreshold değerine eşit veya büyük olan ilk şikayeti bulmak için firstWhere() metodunu kullanın
// Sonuçları yazdır
print('Department: $department');
print('All complaints: $complaints');
print('Urgent threshold: $urgentThreshold');
print('Searching for first complaint >= $urgentThreshold');
// İlk acil şikayet sonucunu yazdır
// Durum mesajını yazdır
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli ListesiKendi başına pratik yap: Online Dart derleyicisi