Case / When İçinde Aralıklar
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 8 / 56.
Aralıklar, Ruby'nin case ifadesinin içinde parlar. Birçok dil karşılaştırma işleçleriyle bir if/elsif zinciri gerektirirken Ruby, bir değeri doğrudan aralıklarla eşleştirmenize olanak tanır.
score = 78
grade = case score
when 90..100 then "A"
when 80..89 then "B"
when 70..79 then "C"
when 60..69 then "D"
else "F"
end
puts grade # CArka planda, when 70..79, aralığın === operatörünü kullanır; bu da (70..79).include?(score) ifadesine eşdeğerdir.
case biçimi, uzun bir if/elsif zincirine göre daha kısa, okunması daha kolay ve yazması daha hızlıdır.
Görev
KolayVirgülle ayrılmış bir tam sayı yaş listesi okuyun. Her yaşı, aralıkları kullanarak bir case ifadesiyle sınıflandırın:
0..12:Child13..19:Teen20..64:Adult65veya daha büyük:Senior- Diğer her şey (negatif): atlanır, rapora dahil edilmez
Sıfır olmayan her kategori için, şu sabit sırada bir sayım satırı yazdırın: Child, Teen, Adult, Senior. Kişi sayısı sıfır olan kategorileri atlayın. Sayımlardan sonra, Skipped: <n> negatif (geçersiz) yaşların sayısı olmak üzere n yazdırın.
5,15,30,70,-3,40,12 girdisi için çıktı şöyledir:
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1Kendin dene
ages = gets.chomp.split(",").map(&:to_i)
# TODO: her yaşı case + ranges ile sınıflandır, kategori başına say, raporu yazdır
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