Case dengan class & regex
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 38 dari 56.
Kamu sudah menggunakan case dengan rentang. Pernyataan yang sama juga mencocokkan class dan ekspresi reguler: keduanya menggunakan operator === yang dipanggil when secara internal.
Cocokkan berdasarkan class untuk menentukan jenis nilai yang kamu dapatkan:
def describe(value)
case value
when Integer then "a whole number"
when Float then "a decimal"
when String then "some text"
else "something else"
end
end
puts describe(42) # bilangan bulat
puts describe(3.14) # bilangan desimal
puts describe("hi") # sebuah teksCocokkan dengan regex untuk menentukan percabangan berdasarkan bentuk string, seperti nomor telepon, email, atau tanggal:
def kind_of(text)
case text
when /^\d+$/ then "all digits"
when /@/ then "looks like an email"
when /^[A-Z]/ then "starts with a capital"
else "other"
end
endIni jauh lebih rapi daripada rangkaian pemanggilan is_a? atau match? dalam if/elsif.
Tantangan
MudahBaca satu baris input. Gunakan pernyataan case untuk mencetak salah satu label berikut berdasarkan tampilan input:
- Semua digit,
number - Berisi
@:email - Dimulai dengan huruf kapital,
name - Selain itu,
unknown
Periksa aturan sesuai urutan yang tercantum (jadi 123 adalah number, bukan unknown; kevin@coddy.tech adalah email; Alice adalah name).
Untuk input kevin@coddy.tech, output-nya adalah email.
Coba sendiri
input = gets.chomp
# TODO: gunakan case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
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