Riepilogo dei blocchi
Passare blocchi ai metodi
Riepilogo dei blocchi è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Passare blocchi ai metodi
Un blocco è una porzione di codice che si passa a un metodo. Molti metodi Ruby, come each, accettano un blocco e lo eseguono al posto suo. I blocchi sono alla base dello stile espressivo di Ruby.
[1, 2, 3].each do |n|
puts n * 10
endDue sintassi per i blocchi
Utilizzi do ... end per i blocchi su più righe e le parentesi graffe { } per le istruzioni brevi su una sola riga. Si comportano allo stesso modo.
[1, 2, 3].each { |n| puts n }Parametri dei blocchi
I nomi tra le barre verticali | | sono i parametri del blocco. È il metodo a decidere quali valori passarvi.
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endyield esegue il blocco
All'interno di un metodo, yield esegue il blocco passato. Per utilizzare yield, non è necessario dichiarare il blocco nell'elenco dei parametri.
def twice
yield
yield
end
twice { puts "Hi" }yield con argomenti
Passi i valori al blocco tramite yield. I valori vengono assegnati ai parametri del blocco.
def greet_each(names)
names.each { |n| yield n }
end
greet_each(["Ann", "Bo"]) { |name| puts "Hello #{name}" }block_given?
La chiamata a yield senza un blocco genera un errore. Esegua prima un controllo con block_given? per rendere il blocco facoltativo.
def maybe
if block_given?
yield
else
puts "No block provided"
end
end
maybe
maybe { puts "Block ran" }I blocchi restituiscono valori
Un blocco restituisce il risultato della sua ultima espressione. Metodi come map raccolgono questi valori restituiti in un nuovo array.
squares = [1, 2, 3, 4].map { |n| n * n }
p squaresIl valore di yield
yield restituisce a sua volta il valore del blocco, quindi un metodo può trasformare l'input tramite un blocco fornito dal chiamante.
def transform(x)
yield x
end
result = transform(5) { |n| n + 100 }
puts resultCatturare un blocco con &
Anteponendo & all'ultimo parametro, il blocco viene catturato come oggetto Proc che può essere memorizzato o passato ad altri metodi.
def run(&block)
block.call
end
run { puts "Called via block.call" }Parametri numerati
Ruby moderno consente di evitare di assegnare un nome a un singolo parametro del blocco usando _1 (o it in Ruby 3.4+). È utile per i blocchi molto brevi.
[10, 20, 30].each { puts _1 }Mettere tutto insieme
I blocchi permettono ai metodi di accettare un comportamento:
do...endo{ }forniscono un blocco.yieldlo esegue;block_given?verifica se è presente.&blocklo trasforma in un oggetto riutilizzabile.
def repeat(times)
return unless block_given?
times.times { |i| yield i }
end
repeat(3) { |i| puts "Step #{i}" }Verifica rapida
Verifichi la comprensione dei blocchi.
Riepilogo
Ha ripassato i blocchi:
- I blocchi passano un comportamento ai metodi tramite
do...endo{ }. yieldesegue il blocco e ne restituisce il valore.block_given?rende i blocchi facoltativi.&blockcattura un blocco come Proc.
def wrap
puts "<<"
yield
puts ">>"
end
wrap { puts "content" }Domande Frequenti
La lezione «Riepilogo dei blocchi» è gratuita?
Sì — il testo completo di «Riepilogo dei blocchi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Riepilogo dei blocchi»?
Passare blocchi ai metodi Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Riepilogo dei blocchi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Riepilogo dei blocchi
- Proc
- Lambda
- Closure e ambito