Rentang dalam Case / When
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 8 dari 56.
Rentang sangat berguna di dalam pernyataan case Ruby. Banyak bahasa memerlukan rangkaian if/elsif dengan operator perbandingan, sedangkan Ruby memungkinkan kamu mencocokkan nilai langsung dengan rentang.
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 # CDi balik layar, when 70..79 menggunakan operator === milik rentang tersebut, yang setara dengan (70..79).include?(score).
Bentuk case lebih singkat, lebih mudah dibaca, dan lebih cepat ditulis daripada rangkaian panjang if/elsif.
Tantangan
MudahBaca daftar usia bilangan bulat yang dipisahkan koma. Untuk setiap usia, klasifikasikan dengan pernyataan case menggunakan rentang:
0..12:Child13..19:Teen20..64:Adult65atau lebih:Senior- Yang lainnya (negatif): dilewati, tidak dimasukkan ke laporan
Cetak satu baris jumlah untuk setiap kategori yang tidak bernilai nol, dengan urutan tetap ini: Child, Teen, Adult, Senior. Lewati kategori yang jumlah orangnya nol. Setelah jumlah tersebut, cetak Skipped: <n> dengan n sebagai jumlah usia negatif (tidak valid).
Untuk input 5,15,30,70,-3,40,12, output-nya adalah:
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1Coba sendiri
ages = gets.chomp.split(",").map(&:to_i)
# TODO: kelompokkan setiap usia dengan case + rentang, hitung jumlah tiap kategori, lalu cetak laporan
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Ringkasan Method StringInterpolasi StringMenelusuri StringMemisahkan dan MenggabungkanRekap: Perangkai String4Block, Proc, dan Lambda
Apa Itu Block?do..end vs Kurung KurawalKata Kunci yieldParameter BlockProc dan LambdaRangkuman, Iterator Kustom5Andalan Enumerable
Select dan RejectMerangkai MapReduce / Injectcount, all?, any?, none?group_by dan partitionsort_by, min_by, max_byRekap: Alur Data8Pengambilan Keputusan Lanjutan
Case dengan class & regexwhen dengan Banyak NilaiOperator Ternaryif / unless SebarisUlasan, Pengklasifikasi NilaiLatihan sendiri: Compiler Ruby online