¿Qué es un bloque?
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 15 de 56.
Ya has estado escribiendo bloques. Cada vez que escribiste each do |x| ... end, la parte entre do y end era un bloque: un fragmento de código pasado a un método.
[1, 2, 3].each do |n|
puts n * 2
endAquí, each es un método del array, y do |n| ... end es el bloque. each ejecuta el bloque una vez por cada elemento, pasándoselo como n.
Los bloques no son objetos independientes que almacenas en variables; están vinculados directamente a la llamada al método. Un método recibe un bloque o no lo recibe, y la mayoría de los métodos de iteración (each, map, select, times) están diseñados para aceptar uno.
3.times do |i|
puts "hi #{i}"
endLlamar a un método sin su bloque cambia lo que hace. [1,2,3].map sin bloque devuelve un enumerador en lugar de un arreglo transformado, por lo que el bloque forma parte de lo que significa el método.
Desafío
PrincipianteLee un entero n de la entrada. Usa el método times con un bloque para imprimir el mensaje Iteration <i> para cada valor de i desde 0 hasta n - 1.
Para la entrada 3, la salida es:
Iteration 0
Iteration 1
Iteration 2Pruébalo tú mismo
n = gets.to_i
# TODO: usa n.times con un bloque para imprimir cada iteración
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