count, all?, any?, none?
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 24 / 56.
Bir koleksiyon hakkında, bir döngü yazmanı gerektirmeden soruları yanıtlayan dört küçük Enumerable yöntemi.
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 true değerini alır:
[2, 4, 6].all? { |n| n.even? } # true
[2, 4, 7].all? { |n| n.even? } # falseany?, en az biri bunu yaptığında doğrudur:
[1, 2, 3].any? { |n| n.even? } # true
[1, 3, 5].any? { |n| n.even? } # falsenone?, hiçbirinin bunu yapmadığı durumda true olur:
[1, 3, 5].none? { |n| n.even? } # trueBu yöntemler kısa devre yapar; any? ilk eşleşmede, all? ilk başarısızlıkta durur. Maliyetleri düşüktür.
Görev
KolayVirgülle ayrılmış test puanlarından (tam sayılar) oluşan bir liste okuyun. Bir sınıf aşağıdaki durumlarda geçerli bir başarılı sınıftır:
- Puanların
none?kadarı negatif değildir (kaydedilmemiş bir test) all?puanlar en fazla100değerindedirany?puan tam olarak100değerindedir (en az bir tam puan)- en az 3 puan
>= 70değerindedir (countkullanın)
Tam olarak bir satır yazdırın:
- Dört koşulun tümü sağlandığında
Valid: <count> passing(count,>= 70olan puanların sayısıdır) - Aksi durumda
Invalid
72,80,100,65,90 girdisi için: 4 puan >= 70, hiçbiri negatif değil, tümü <= 100, biri 100 ve çıktı Valid: 4 passing olur.
72,80,90 için: 3 başarılı puan var ancak tam puan yok, bu nedenle Invalid.
Kendin dene
scores = gets.chomp.split(",").map(&:to_i)
# TODO: Valid vs Invalid kararı için all?, any?, none?, count'u birleştir
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
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri HattıKendi başına pratik yap: Online Ruby derleyicisi