Che cos’è un Block?
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 15 di 56.
Hai già scritto dei blocchi. Ogni volta che hai scritto each do |x| ... end, la parte tra do e end era un blocco: un pezzo di codice passato a un metodo.
[1, 2, 3].each do |n|
puts n * 2
endQui, each è un metodo dell’array e do |n| ... end è il blocco. each esegue il blocco una volta per ogni elemento, passandolo come n.
I blocchi non sono oggetti separati da memorizzare nelle variabili: sono collegati direttamente alla chiamata del metodo. Un metodo riceve un blocco oppure no, e la maggior parte dei metodi di iterazione (each, map, select, times) è progettata per riceverne uno.
3.times do |i|
puts "hi #{i}"
endChiamare un metodo senza il suo blocco cambia ciò che fa. [1,2,3].map senza blocco restituisce un enumeratore invece di un array trasformato, quindi il blocco fa parte di ciò che significa il metodo.
Sfida
PrincipianteLeggi un intero n dall'input. Usa il metodo times con un blocco per stampare il messaggio Iteration <i> per ogni valore di i da 0 fino a n - 1.
Per l'input 3, l'output è:
Iteration 0
Iteration 1
Iteration 2Provalo tu
n = gets.to_i
# TODO: usa n.times con un blocco per stampare ogni iterazione
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