do..end frente a 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}"
endLas 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]Desafío
FácilLee una lista de enteros separados por comas desde la entrada. Imprime dos líneas:
- Cada número duplicado, unido con
,. Usa la forma de llaves demap. - La cadena
"<n> squared is <n*n>"para cada número, una por línea. Usa la formado...enddeeach.
Para la entrada 1,2,3, la salida es:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9Prué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
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