¿Qué es un Rango?
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 6 de 56.
Ya has usado rangos con bucles for y el fraccionamiento de arreglos (array slicing). Pero un rango es un objeto de Ruby real, no solo sintaxis; tiene sus propios métodos.
Crea uno con .. (dos puntos, inclusivo) o ... (tres puntos, excluyendo el valor final):
inclusive = 1..5 # 1, 2, 3, 4, 5
exclusive = 1...5 # 1, 2, 3, 4Convierte un rango en un array con to_a para ver exactamente qué cubre:
puts (1..5).to_a.inspect # [1, 2, 3, 4, 5]
puts (1...5).to_a.inspect # [1, 2, 3, 4]Los rangos no son solo para números. Funcionan con cualquier cosa que tenga un orden, incluyendo letras:
puts ("a".."e").to_a.inspect # ["a", "b", "c", "d", "e"]Desafío
PrincipianteLee dos números enteros (dos líneas de entrada): un start y un end_value. Imprime tres líneas:
- El rango inclusivo
start..end_valuecomo un array (usainspect) - El rango exclusivo
start...end_valuecomo un array - El tamaño del rango inclusivo
Para la entrada 1 y luego 5, la salida es:
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
5Hoja de referencia
Los rangos en Ruby utilizan .. (inclusivo) o ... (excluyendo el final):
inclusive = 1..5 # 1, 2, 3, 4, 5
exclusive = 1...5 # 1, 2, 3, 4Convierte un rango en un array con to_a:
puts (1..5).to_a.inspect # [1, 2, 3, 4, 5]
puts (1...5).to_a.inspect # [1, 2, 3, 4]Los rangos también funcionan con letras:
puts ("a".."e").to_a.inspect # ["a", "b", "c", "d", "e"]Pruébalo tú mismo
start = gets.to_i
end_value = gets.to_i
# TODO: imprimir el rango inclusivo, el rango exclusivo y el tamaño inclusivo
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
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline