Menu
Coddy logo textTech

Parámetros de bloque

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 18 de 56.

Las variables entre las barras, |x|, |x, y|, son los parámetros de bloque. Nombran los valores que el método pasa al bloque.

Algunos métodos pasan un valor, otros pasan varios. each pasa un elemento a la vez:

[10, 20, 30].each { |n| puts n }

each_with_index pasa dos, el elemento y su índice:

["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end
# 0: a
# 1: b
# 2: c

Al iterar un hash, los parámetros del bloque son la clave y el valor:

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

El número y el orden de los parámetros de bloque dependen de lo que el método genere (yields). En caso de duda, consulta la documentación o prueba con un parámetro y mira qué obtienes.

challenge icon

Desafío

Fácil

Se proporciona el hash scores. Iteralo con each_with_index en su forma to_a para que tengas acceso tanto al par (name, points) como a su posición. Imprime una línea por entrada en este formato:

<rank>. <name> - <points>

Donde rank comienza en 1 (no 0).

Para el hash por defecto, la salida es:

1. Alice - 90
2. Bob - 85
3. Cara - 78

Hoja de referencia

Los parámetros de bloque se nombran entre barras verticales |...| y reciben los valores cedidos por el método:

# each – un parámetro
[10, 20, 30].each { |n| puts n }

# each_with_index – elemento e índice
["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end

# hash each – clave y valor
{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

hash.to_a convierte un hash en un array de pares [key, value], lo cual es útil con each_with_index:

{ a: 1, b: 2 }.to_a.each_with_index do |(key, value), i|
  puts "#{i}: #{key} = #{value}"
end

Pruébalo tú mismo

scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }

# TODO: imprimir "<rank>. <name> - <points>" para cada entrada, el rango comienza en 1
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