0Pricing
Ruby Academy · Lección

Repaso de bloques

Pase bloques a métodos

Repaso de bloques es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

Pasar bloques a métodos

Un bloque es un fragmento de código que se entrega a un método. Muchos métodos de Ruby, como each, aceptan un bloque y lo ejecutan por usted. Los bloques son la base del estilo expresivo de Ruby.

[1, 2, 3].each do |n|
  puts n * 10
end

Dos sintaxis para bloques

Utilice do ... end para bloques de varias líneas y llaves { } para expresiones breves de una sola línea. Se comportan de la misma manera.

[1, 2, 3].each { |n| puts n }

Parámetros de bloque

Los nombres situados entre las barras verticales | | son los parámetros del bloque. El método decide qué valores pasarles.

{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

yield ejecuta el bloque

Dentro de un método, yield ejecuta el bloque que se haya pasado. No es necesario declarar el bloque en la lista de parámetros para utilizar yield.

def twice
  yield
  yield
end
twice { puts "Hi" }

yield con argumentos

Pase valores al bloque mediante yield. Estos valores se asignan a los parámetros del bloque.

def greet_each(names)
  names.each { |n| yield n }
end
greet_each(["Ann", "Bo"]) { |name| puts "Hello #{name}" }

block_given?

Llamar a yield sin un bloque genera un error. Compruébelo primero con block_given? para que el bloque sea opcional.

def maybe
  if block_given?
    yield
  else
    puts "No block provided"
  end
end
maybe
maybe { puts "Block ran" }

Los bloques devuelven valores

Un bloque se evalúa como su última expresión. Los métodos como map recopilan esos valores devueltos en un arreglo nuevo.

squares = [1, 2, 3, 4].map { |n| n * n }
p squares

El valor de yield

yield devuelve el valor del bloque, por lo que un método puede transformar la entrada mediante un bloque proporcionado por el llamador.

def transform(x)
  yield x
end
result = transform(5) { |n| n + 100 }
puts result

Capturar un bloque con &

Prefije el último parámetro con & para capturar el bloque como un objeto Proc que pueda almacenar o pasar a otro método.

def run(&block)
  block.call
end
run { puts "Called via block.call" }

Parámetros numerados

Ruby moderno permite omitir el nombre de un único parámetro de bloque mediante _1 (o it en Ruby 3.4 o posterior). Resulta práctico para bloques pequeños.

[10, 20, 30].each { puts _1 }

Cómo encaja todo

Los bloques permiten que los métodos acepten comportamiento:

  • do...end o { } proporcionan un bloque.
  • yield lo ejecuta; block_given? comprueba si se proporcionó.
  • &block lo convierte en un objeto reutilizable.
def repeat(times)
  return unless block_given?
  times.times { |i| yield i }
end
repeat(3) { |i| puts "Step #{i}" }

Comprobación rápida

Compruebe su comprensión de los bloques.

Repaso

Ha repasado los bloques:

  • Los bloques pasan comportamiento a los métodos mediante do...end o { }.
  • yield ejecuta el bloque y devuelve su valor.
  • block_given? permite que los bloques sean opcionales.
  • &block captura un bloque como un Proc.
def wrap
  puts "<<"
  yield
  puts ">>"
end
wrap { puts "content" }

Preguntas frecuentes

¿La lección «Repaso de bloques» es gratis?

Sí — el texto completo de «Repaso de bloques» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Repaso de bloques»?

Pase bloques a métodos Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Repaso de bloques»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Repaso de bloques
  2. Procs
  3. Lambdas
  4. Clausuras y ámbito
← Volver a Ruby Academy