when dengan Banyak Nilai
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 39 dari 56.
Satu klausa when dapat mencocokkan salah satu dari beberapa nilai yang dipisahkan dengan koma. Cabang dijalankan jika subjek sama dengan salah satu nilai tersebut.
day = "Sat"
kind = case day
when "Sat", "Sun" then "weekend"
when "Mon", "Tue", "Wed", "Thu", "Fri" then "weekday"
end
puts kind # akhir pekanIni jauh lebih rapi daripada merangkai || dalam if/elsif.
Kamu juga bisa mencampur berbagai tipe nilai dalam satu when: string, rentang, pola regex, semuanya hanyalah hal yang merespons ===:
def describe(x)
case x
when 0, nil then "empty"
when 1..9 then "small"
when 10..99 then "medium"
when /^huge:/i then "flagged huge"
end
endPilih bentuk yang membuat setiap cabang mudah dibaca sekilas.
Tantangan
MudahBaca satu karakter (satu baris input). Gunakan case dengan cabang when yang memiliki beberapa nilai untuk mencetak salah satu dari:
vowel: input adalah salah satu daria, e, i, o, u(tidak membedakan huruf besar dan kecil, ubah input menjadi huruf kecil terlebih dahulu)digit: input adalah salah satu dari0..9(gunakan rentang)punctuation: input adalah salah satu dari.,,,!,?other: apa pun selain itu
Perlakukan input sebagai string satu karakter. Uji cabang digit menggunakan rentang seperti "0".."9".
Untuk input E, output-nya adalah vowel; untuk 7, output-nya adalah digit; untuk !, output-nya adalah punctuation.
Coba sendiri
ch = gets.chomp
# TODO: gunakan case ch.downcase ... dengan cabang when yang memiliki beberapa nilai
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