Las secuencias tienen un límite inferior, un límite superior y una manera
de producir valores sucesivos dentro de la secuencia. En Ruby, estas secuencias
son creadas usando los operadores de rango "..." y "..."
El operador de dos puntos .. cera un rango inclusivo, y la forma de
tres puntos ... crea un rango que excluye el valor superior.
En Ruby, la secuencia 1..100000 es considerada un objeto de la clase
Range que contiene referencias a dos objetos de la clase Fixnum.
El método .to_a convierte un rango a un array.
Otro uso para los versátiles rangos es la prueba de intervalos: verificar si un valor
está dentro del intervalo representado por el rango. Podemos hacer esto utilizando
el operador de igualdad case===.
Los rangos no están limitados a números. Los límites de un rango pueden ser cualquier
objeto Ruby.
Importante: Los bloques de código ruby son porciones de de código
delimitadas por corchetes {} o entre do y end
y pueden ser asociados con llamadas a métodos.
Los bloques pueden aparecer solamente en el código adyacente a una llamada a un
método; el bloque es escrito comenzando en la misma línea que el último parámetro
del método (o del cierre de paréntesis de la lista de parámetros). El código en el
bloque no es ejecutado en el momento en el que es encontrado. Ruby recuerda el
contexto en el que el bloque aparece (las variables locales, el objeto actual, etc.)
y ejecuta el método.
Es una costumbre en Ruby usar corchetes ({}) para bloques que ocupan
una sola línea y do..end para bloques que abarcan más de una línea.
Toma en consideración que la sintaxis que utiliza corchetes tiene mayor precedencia
que do..end.
Dentro de un método puedes llamar a un bloque usando yield.
Puedes pasar parámetros a yield, que serán pasados al bloque.
Dentro del bloque, debes enlistar los nombres de los argumentos entre barras
verticales (||).
Los bloques no son objetos pero pueden ser convertidos a objetos de la clase
Proc utilizando el método lambda del módulo Kernel.
Recuerda que no puedes pasar métodos a otros métodos (pero puedes pasar procs) y
los métodos no pueden regresar otros métodos (pero pueden regresar procs).
El método para obtener un número aleatorio en Ruby es rand.
Si llamas al método rand, obtienes un número decimal (float)
mayor o igual que 0.0 y menor que 1.0. Si pasas un número entero como parámetro
(rand(5)) obtienes un número entero mayor o igual que cero y menor que 5.
El método File.open puede abrir un archivo en diferentes modalidades
como r (read-only) que comienza al inicio del archivo; r+
(read/write), que comienza al inicio del archivo; w (write only), que
trunca el archivo a 0 bytes o crea un archivo nuevo para escritura.
File.open abre un nuevo archivo si no hay un bloque asociado. Si el
bloque opcional está presente, será pasado al archivo como argumento y el archivo
será cerrado automáticamente cuando el bloque termine.
Recuerda siempre cerrar los archivos que abras. En el caso de un archivo abierto para
escritura esto es muy importante y puede prevenir la pérdida de datos.
El método seek de la clase IO busca una posición en un
archivo dada por el primer parámetro (un número entero) y el valor del segundo
parámetro. El segundo parámetro puede ser IO::SEEK_CUR que busca
la posición dada por el primer parámetro más la posición actual; IO::
SEEK_END que busca la posición dada por el primer parámetro hasta el final
del archivo y IO::SEEK_SET que busca la posición absoluta dada por
el primer parámetro.