Menu
CoddyTech

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 teks

Cocokkan 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
end

Ini jauh lebih rapi daripada rangkaian pemanggilan is_a? atau match? dalam if/elsif.

challenge icon

Tantangan

Mudah

Baca 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Ruby online