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: cAl 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}"
endEl 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.
Desafío
FácilSe proporciona el hash scores. Itera sobre él con each_with_index en su forma to_a para tener acceso tanto al par (nombre, puntos) como a su posición. Imprime una línea por entrada con este formato:
<rank>. <name> - <points>Donde rank comienza en 1 (no en 0).
Para el hash predeterminado, la salida es:
1. Alice - 90
2. Bob - 85
3. Cara - 78Pruébalo tú mismo
scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }
# TODO: imprimir "<rank>. <name> - <points>" para cada entrada, el rango comienza en 1
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
1Cadenas en profundidad
Descripción general de los métodos de cadenasInterpolación de cadenasIteración sobre cadenasSeparar y unirRepaso: Tejedor de cadenas4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end frente a llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasRepaso: iterador personalizado7Hashes Parte 2
Hash.new con valores predeterminadosIteración de hashesHashes anidadosCombinación y transformaciónRepaso: contador de frecuencias10Proyecto - Registros de estudiantes
Descripción general del proyectoAgregar estudiante5Potencia Enumerable
Select y RejectEncadenamiento de MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byRepaso: canalización de datosPractica por tu cuenta: Compilador de Ruby online