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
endDos 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}"
endyield 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 squaresEl 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 resultCapturar 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...endo{ }proporcionan un bloque.yieldlo ejecuta;block_given?comprueba si se proporcionó.&blocklo 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...endo{ }. yieldejecuta el bloque y devuelve su valor.block_given?permite que los bloques sean opcionales.&blockcaptura 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
- Repaso de bloques
- Procs
- Lambdas
- Clausuras y ámbito