0Pricing
Ruby Academy · Lezione

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
end

Due 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}"
end

yield 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 squares

Il 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 result

Catturare 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...end o { } forniscono un blocco.
  • yield lo esegue; block_given? verifica se è presente.
  • &block lo 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...end o { }.
  • yield esegue il blocco e ne restituisce il valore.
  • block_given? rende i blocchi facoltativi.
  • &block cattura 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

  1. Riepilogo dei blocchi
  2. Proc
  3. Lambda
  4. Closure e ambito
← Torna a Ruby Academy