do..end vs parentesi graffe
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 16 di 56.
Ruby ti offre due modi per scrivere un blocco. Significano la stessa cosa, ma ciascuno ha un caso d’uso preferito.
do...end serve per i blocchi multiriga:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
endLe parentesi graffe { ... } servono per i blocchi su una sola riga, brevi e dalla forma di un'espressione:
[1, 2, 3].each { |n| puts n * 2 }I due hanno una precedenza leggermente diversa, ma la regola da seguire è quella di stile: parentesi graffe per le istruzioni su una sola riga, do...end per quelle su più righe.
Entrambe le forme possono restituire un valore. L’ultima espressione del blocco è ciò che viene passato a metodi come map:
[1, 2, 3].map { |n| n * 10 } # [10, 20, 30]
[1, 2, 3].map do |n|
n * 10
end # [10, 20, 30]Sfida
FacileLeggi dall'input un elenco di numeri interi separati da virgole. Stampa due righe:
- Ogni numero raddoppiato, unito con
,. Usa la forma con le parentesi graffe dimap. - La stringa
"<n> squared is <n*n>"per ogni numero, una per riga. Usa la formado...enddieach.
Per l'input 1,2,3, l'output è:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9Provalo tu
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: riga 1, valori raddoppiati, forma di map con parentesi graffe, uniti con ", "
# TODO: righe 2..n, quadrati, forma do...end di each
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