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 ifadesi içinde parlar. Pek çok dilin karşılaştırma operatörleri içeren bir if/elsif zincirine ihtiyaç duyduğu yerde 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) ile eşdeğerdir.
case formu, uzun bir if/elsif merdiveninden daha kısa, okunması daha kolay ve yazılması daha hızlıdır.
Görev
KolayVirgülle ayrılmış tam sayı yaş listesini okuyun. Her bir yaş için, aralıklar (ranges) kullanarak bir case ifadesi ile sınıflandırın:
0..12:Child13..19:Teen20..64:Adult65veya daha yüksek:Senior- Diğer her şey (negatif): atlanır, rapora dahil edilmez
Sıfır olmayan her kategori için şu sabit sırayla 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, n negatif (geçersiz) yaşların sayısı olmak üzere Skipped: <n> yazdırın.
5,15,30,70,-3,40,12 girişi için çıktı şöyledir:
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1Kopya kağıdı
case ifadelerinde aralıkları kullanın — Ruby === (include? metoduna eşdeğerdir) aracılığıyla eşleştirme yapar:
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 # CKendin dene
ages = gets.chomp.split(",").map(&:to_i)
# YAPILACAK: her yaşı case + aralıklar ile sınıflandırın, kategori başına sayın, raporu yazdırın
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ı