Rangos (ranges)
Quizá el uso más natural de los rangos es expresar secuencias. Las secuencias
tienen un punto inicial, un punto final y una manera de producir valores
subsecuentes en la secuencia. En Ruby, estas secuencias son creadas usando
los operadores de rango (..) y (...).
La forma de dos puntos crea un rango ‘inclusivo’ y la forma de tres puntos
crea un rango que excluye el valor más alto especificado. En Ruby, los rangos
no son representados internamente como listas: la secuencia 1..100000 es
sostenida como un objeto de clase Range que contiene referencias a dos
objetos de clase Fixnum. Observa el programa p021rangos.rb. Si lo necesitas,
puedes convertir un rango a un array utilizando el método to_a:
1 (1..10).to_a # regresa [1,2,3,4,5,6,7,8,9,10]
Los rangos implementan métodos que te permiten hacer iteraciones y probar su contenido de diferentes maneras:
1 digitos = -1..9 2 puts digitos.include?(5) # true 3 puts digitos.min # -1 4 puts digitos.max # 9 5 puts digitos.reject {|i| i < 5 } # [5, 6, 7, 8, 9]
Otro uso de los versátiles rangos es hacer pruebas de intervalos: verificar si
un valor se encuentra dentro del intervalo representado por el rango. Para
lograr esto, utilizamos el operador de igualdad case (===):
1 (1..10) === 5 # => true 2 (1..10) === 15 # => false 3 (1..10) === 3.14 # => true 4 ('a'..'j') === 'c' # => true 5 ('a'..'j') === 'z' # => false
Tarea:
- Dada la cadena “key=value”, crea dos cadenas c1 y c2 de tal manera que
c1 contenga la palabra ‘key’ y c2 contenga la palabra ‘value’. Pista:
Utiliza algunos de los métodos de la clase
String(p021rangesex.rb)