Menu
Coddy logo textTech

Case con classi e Regex

Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 38 di 56.

Hai usato case con gli intervalli. La stessa istruzione verifica anche le classi e le espressioni regolari: entrambe tramite l'operatore === che when chiama internamente.

Abbina la classe per scegliere in base al tipo di valore che hai ottenuto:

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)      # un numero intero
puts describe(3.14)    # un numero decimale
puts describe("hi")    # del testo

Usa un'espressione regolare per diramare in base alla forma di una stringa: un numero di telefono, un'email, una data:

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

Questo è molto più pulito di una catena di chiamate a is_a? o match? in if/elsif.

challenge icon

Sfida

Facile

Leggi una singola riga di input. Usa un'istruzione case per stampare una di queste etichette in base a come sembra l'input:

  • Solo cifre, number
  • Contiene @: email
  • Inizia con una lettera maiuscola, name
  • Qualsiasi altra cosa, unknown

Controlla le regole nell'ordine indicato (quindi 123 è number, non unknown; kevin@coddy.tech è email; Alice è name).

Per l'input kevin@coddy.tech, l'output è email.

Provalo tu

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Ruby online