count, all?, any?, none?
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 24 / 56.
Sizi bir döngü yazmaya zorlamadan, bir koleksiyon hakkında soruları yanıtlayan dört küçük Enumerable metodu.
count bloğu sağlayan kaç öğe olduğunu döndürür:
[1, 2, 3, 4, 5].count { |n| n.even? } # 2
[1, 2, 3, 4, 5].count # 5 (blok yok, toplam sayı)all?, her öğe bloğu sağladığında doğrudur:
[2, 4, 6].all? { |n| n.even? } # doğru
[2, 4, 7].all? { |n| n.even? } # yanlışany?, en az bir eleman koşulu sağladığında true döner:
[1, 2, 3].any? { |n| n.even? } # true
[1, 3, 5].any? { |n| n.even? } # falsenone?, öğelerin hiçbiri koşulu sağlamadığında true döner:
[1, 3, 5].none? { |n| n.even? } # trueMetotlar kısa devre yapar; any? ilk eşleşmede durur, all? ilk başarısızlıkta durur. Bunlar düşük maliyetlidir.
Görev
KolayVirgülle ayrılmış bir test puanları (tam sayılar) listesini okuyun. Bir sınıf, aşağıdaki durumlarda geçerli bir geçen sınıf sayılır:
- Puanların
none?(hiçbiri) negatif değilse (kaydedilmemiş bir test) - Puanların
all?(tamamı) en fazla100ise - Puanlardan
any?(en az biri) tam olarak100ise (en az bir tam puan) - En az 3 puan
>= 70ise (countkullanın)
Tam olarak bir satır yazdırın:
- Dört koşulun tamamı sağlandığında
Valid: <count> passing(buradacount,>= 70olan puanların sayısıdır) - Aksi takdirde
Invalid
72,80,100,65,90 girişi için: 4 puan >= 70, hiçbiri negatif değil, hepsi <= 100, bir tanesi 100, bu nedenle çıktı Valid: 4 passing olur.
72,80,90 için: 3 kişi geçiyor ancak tam puan yok, bu nedenle Invalid.
Kopya kağıdı
Bir koleksiyon hakkındaki soruları yanıtlayan dört Enumerable metodu:
count – bloğu karşılayan kaç öğe olduğunu döndürür (blok yoksa toplam boyutu döndürür):
[1, 2, 3, 4, 5].count { |n| n.even? } # 2
[1, 2, 3, 4, 5].count # 5all? – her öğe bloğu karşıladığında true döner:
[2, 4, 6].all? { |n| n.even? } # trueany? – en az bir öğe bloğu karşıladığında true döner:
[1, 2, 3].any? { |n| n.even? } # truenone? – hiçbir öğe bloğu karşılamadığında true döner:
[1, 3, 5].none? { |n| n.even? } # trueBu metodlar kısa devre (short-circuit) yapar: any? ilk eşleşmede durur, all? ise ilk başarısızlıkta durur.
Kendin dene
scores = gets.chomp.split(",").map(&:to_i)
# TODO: Valid vs Invalid kararı vermek için all?, any?, none?, count metotlarını birleştirin
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı