'any' ile Koşul Kontrolü
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 13 / 65.
Bazen bir listedeki en az bir öğenin, her bir öğeyi incelemek zorunda kalmadan belirli bir koşulu karşılayıp karşılamadığını kontrol etmeniz gerekir. any() yöntemi, test koşulunuzu sağlayan ilk öğeyi bulur bulmaz true döndürerek bunu yapmanın verimli bir yolunu sunar.
any() yöntemi, her öğe için true veya false döndüren bir test fonksiyonu alır. Eğer herhangi bir öğe testi geçerse, any() anında true döndürür. Listenin tamamı kontrol edildikten sonra hiçbir öğe testi geçemezse, false döndürür.
List<double> prices = [15.99, 45.50, 120.00, 8.75];
// Herhangi bir ürünün fiyatının 100 dolardan fazla olup olmadığını kontrol edin
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem); // trueBu yöntem, en az bir öğenin belirli kriterleri karşılayıp karşılamadığını bilmeniz gereken doğrulama senaryoları için özellikle yararlıdır. any() yöntemi, bir eşleşme bulur bulmaz kontrol etmeyi durdurur; bu da yalnızca bir şeyin var olup olmadığını bilmeniz gerektiğinde tüm listeyi manuel olarak döngüye almaktan daha verimli olmasını sağlar.
Görev
KolayBir binadaki herhangi bir sensörün şüpheli etkinlik algılayıp algılamadığını kontrol ederek bir güvenlik sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Bina adını temsil eden bir dize (string) girdisi okuyun
- Farklı katlardan gelen sensör okumalarını temsil eden birden fazla tam sayı girdisi okuyun (girdi
-1değerini aldığınızda sona erecektir) - Uyarı eşik değerini temsil eden bir tam sayı girdisi okuyun
- Herhangi bir sensör okumasının uyarı eşiğine eşit veya ondan büyük olup olmadığını kontrol etmek için
any()metodunu kullanın - Güvenlik izleme sonuçlarını tam olarak aşağıda gösterilen formatta yazdırın
Örneğin, bina adı "Office Tower", sensör okumaları 15, 23, 8, 45, 12 ve uyarı eşiği 40 ise programınızın çıktısı şöyle olmalıdır:
Building: Office Tower
Sensor readings: [15, 23, 8, 45, 12]
Alert threshold: 40
Checking for readings >= 40
Alert triggered: true
Status: Security breach detected - immediate response requiredEğer bina adı "Shopping Mall", sensör okumaları 18, 25, 12, 30 ve uyarı eşiği 50 ise programınızın çıktısı şöyle olmalıdır:
Building: Shopping Mall
Sensor readings: [18, 25, 12, 30]
Alert threshold: 50
Checking for readings >= 50
Alert triggered: false
Status: All systems normal - no threats detectedEğer bina adı "Warehouse", sensör okumaları 75, 82 ve uyarı eşiği 70 ise programınızın çıktısı şöyle olmalıdır:
Building: Warehouse
Sensor readings: [75, 82]
Alert threshold: 70
Checking for readings >= 70
Alert triggered: true
Status: Security breach detected - immediate response requiredProgramınız, herhangi bir sensör okumasının uyarı eşiğine eşit veya ondan büyük olup olmadığını kontrol etmek için any() metodunu kullanmalıdır. Herhangi bir sensör uyarıyı tetiklerse "Security breach detected - immediate response required", hiçbir sensör eşiği aşmazsa "All systems normal - no threats detected" mesajını görüntüleyin.
Kopya kağıdı
any() yöntemi, bir listedeki en az bir öğenin belirli bir koşulu karşılayıp karşılamadığını kontrol eder. Test koşulunu sağlayan ilk öğeyi bulur bulmaz true, hiçbir öğe testi geçemezse false değerini döndürür.
List<double> prices = [15.99, 45.50, 120.00, 8.75];
// Herhangi bir öğenin maliyetinin 100 dolardan fazla olup olmadığını kontrol edin
bool hasExpensiveItem = prices.any((price) => price > 100);
print(hasExpensiveItem); // trueany() yöntemi verimlidir çünkü bir eşleşme bulur bulmaz kontrol etmeyi durdurur; bu da onu yalnızca bir şeyin var olup olmadığını bilmeniz gereken doğrulama senaryoları için ideal kılar.
Kendin dene
import 'dart:io';
void main() {
// Bina adını oku
String? buildingName = stdin.readLineSync();
// -1 ile karşılaşana kadar sensör okumalarını oku
List<int> sensorReadings = [];
while (true) {
int reading = int.parse(stdin.readLineSync()!);
if (reading == -1) {
break;
}
sensorReadings.add(reading);
}
// Uyarı eşiğini oku
int alertThreshold = int.parse(stdin.readLineSync()!);
// TODO: Kodunuzu aşağıya yazın
// Herhangi bir sensör okumasının >= uyarı eşiği olup olmadığını kontrol etmek için any() metodunu kullanın
// Sonuçları gerekli formatta yazdırın
print('Building: $buildingName');
print('Sensor readings: $sensorReadings');
print('Alert threshold: $alertThreshold');
print('Checking for readings >= $alertThreshold');
// Uyarı tetiklenme sonucunu ve durum mesajını yazdırın
}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 Listesi