if / unless inline
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 41 di 56.
Ruby ti permette di mettere if e unless alla fine di una singola istruzione, come modificatore su una sola riga. Si legge quasi come l’italiano.
puts "Adult" if age >= 18
puts "Save your work" unless savedÈ lo stesso di:
if age >= 18
puts "Adult"
end
unless saved
puts "Save your work"
endLa forma inline è ideale per i controlli di guardia all'inizio di un metodo o per aggiornamenti condizionali occasionali all'interno di un ciclo:
return if name.nil? || name.empty?
counts = Hash.new(0)
words.each do |w|
counts[w] += 1 unless w.start_with?("#")
endCome con l’operatore ternario, usa i modificatori inline per le istruzioni brevi. Se il corpo occupasse più di una singola riga, scrivi invece un vero blocco if.
Sfida
FacileLeggi un elenco di numeri interi separati da virgole. Per ogni numero, stampa una riga, ma solo se il numero è diverso da zero:
- Stampa
positive: <n>sen > 0 - Stampa
negative: <n>a meno chen >= 0
Entrambe le righe devono usare la forma con modificatore inline (nessun blocco if, nessun else). Dopo il ciclo, stampa Skipped zeros: <count>, dove il conteggio è il numero di zeri, calcolato anch'esso senza un blocco if (usa count).
Per l'input 3,-2,0,5,0, l'output è:
positive: 3
negative: -2
positive: 5
Skipped zeros: 2Provalo tu
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: stampa usando `if` / `unless` inline per ogni numero
# TODO: stampa Skipped zeros: <n> usando count
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 dati8Decisioni avanzate
Case con classi e Regexwhen con più valoriOperatore ternarioif / unless inlineRiepilogo - classificatore dei votiEsercitati da solo: Compilatore Ruby online