Menu
Coddy logo textTech

do..end vs llaves

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 16 de 56.

Ruby te ofrece dos formas de escribir un bloque. Significan lo mismo, pero cada una tiene un caso de uso preferido.

do...end es para bloques multilínea:

[1, 2, 3].each do |n|
  doubled = n * 2
  puts "#{n} -> #{doubled}"
end

Las llaves { ... } son para bloques de una sola línea, cortos, con forma de expresión:

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

Los dos tienen una precedencia ligeramente diferente, pero la regla que los estudiantes necesitan es la de estilo: llaves para una sola línea, do...end para múltiples líneas.

Ambas formas pueden devolver un valor. La última expresión del bloque es lo que se devuelve a métodos como map:

[1, 2, 3].map { |n| n * 10 }    # [10, 20, 30]
[1, 2, 3].map do |n|
  n * 10
end                              # [10, 20, 30]
challenge icon

Desafío

Fácil

Lee una lista de enteros separados por comas desde la entrada. Imprime dos líneas:

  1. Cada número duplicado, unido con , . Usa la forma de llaves de map.
  2. La cadena "<n> squared is <n*n>" para cada número, una por línea. Usa la forma do...end de each.

Para la entrada 1,2,3, la salida es:

2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9

Pruébalo tú mismo

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: línea 1, duplicada, forma de llave de map, unida con ", "
# TODO: líneas 2..n, cuadrados, forma do...end de each
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de Ruby online