Intervalli in Case / When
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 8 di 56.
Gli intervalli danno il meglio all'interno dell'istruzione case di Ruby. Mentre in molti linguaggi serve una catena di if/elsif con operatori di confronto, Ruby ti permette di confrontare direttamente un valore con gli intervalli.
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 # CDietro le quinte, when 70..79 usa l'operatore === dell'intervallo, che equivale a (70..79).include?(score).
La forma case è più breve, più facile da leggere e più veloce da scrivere di una lunga catena di if/elsif.
Sfida
FacileLeggi un elenco di età intere separate da virgole. Per ogni età, classificala con un'istruzione case usando gli intervalli:
0..12:Child13..19:Teen20..64:Adult65o superiore:Senior- Qualsiasi altro valore (negativo): ignorato, non viene incluso nel resoconto
Stampa una riga con il conteggio per ogni categoria diversa da zero, in questo ordine fisso: Child, Teen, Adult, Senior. Salta le categorie con zero persone. Dopo i conteggi, stampa Skipped: <n> dove n è il numero di età negative (non valide).
Per l'input 5,15,30,70,-3,40,12, l'output è:
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1Provalo tu
ages = gets.chomp.split(",").map(&:to_i)
# TODO: classifica ogni età usando case e gli intervalli, conta le persone per categoria, stampa il resoconto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di datiEsercitati da solo: Compilatore Ruby online