El principal uso y quizás el más apropiado para los rangos, es expresar una secuencia: las secuencias tienen un punto inicial y un punto final, y una forma de producir los sucesivos valores entre ambos. En Ruby, esas secuencias son creadas usando los operandos .. y …
.. genera una secuencia donde los puntos límites están incluidos.
(1..3).to_a #es la secuencia 1, 2, 3
… genera una secuencia en la que no está incluida el límite superior.
(1...5).to_a #equivale a 1, 2, 3, 4
En Ruby los rangos no son almacenados como una lista: los rangos se almacenan como un objeto Range, y contiene referencias a dos objetos Fixnum (su límite superior e inferior). Se puede convertir un rango en un array ( array = lista, conjunto ordenado de elementos), mediante el método to_a.
(1..10).to_a #obtenemos [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
métodos
Los rangos en ruby tienen diversos métodos:
nums = -1...9 puts nums.include?(5) # true puts nums.min # -1 puts nums.max # 8 puts nums.reject {|i| i < 5} # [5, 6, 7, 8]
Uno de los usos útiles de los rangos, es comprobar si un determinado valor está en el intervalo representado por el rango. Para eso usamos el operador ===
(1..10) === 5 # true (1..10) === 15 # false (1..10) === 3.14159 # true ('a'..'j') === 'c' # true