English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Rango (Range) en Ruby

Rango (Range) en todas partes: de a a z, de 0 a 9y otros. Ruby admite rangos y permite utilizarlos de diferentes maneras:

  • como rango de secuencia

  • como rango de condición

  • Rango como intervalo

como rango de secuencia

La primera y la más común de las usos del rango es expresar secuencias. Una secuencia tiene un punto de partida, un punto de llegada y una manera de generar valores consecutivos.

Ruby utiliza ".." y "..." Los operadores de rango crean estas secuencias. La forma de dos puntos crea un rango que incluye el valor máximo especificado, y la forma de tres puntos crea un rango que no incluye el valor máximo especificado.

(1..5)       #==> 1, 2, 3, 4, 5
(1...5)       #==> 1, 2, 3, 4
("a".."d")       #==> "a", "b", "c", "d"

secuencia 1..100 es una Rango El objeto, que contiene dos Fixnum La referencia al objeto. Si es necesario, puede usar to_a El método convierte el rango en una lista. Pruebe el siguiente ejemplo:

Ejemplo en línea

#!/usr/bin/ruby
 
$, =", "   # Separador de valores de array
rango1 =1..10).to_a
rango2 = ("bar".."bat").to_a
 
imprimir "#{rango1"
imprimir "#{rango2"

El resultado de ejecutar el ejemplo anterior es:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
["bar", "bas", "bat"]

El rango implementa métodos que le permiten recorrerlos, y puede verificar su contenido de varias maneras:

Ejemplo en línea

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
# Especificar rango
dígito = 0..9
 
imprimir dígito.incluye?(}5)
ret = dígito.mínimo
imprimir "El valor mínimo es #{ret}"
 
ret = dígito.máximo
imprimir "El valor máximo es #{ret}"
 
ret = dígito.rechazar {|i| i < 5 }
imprimir "Los que no cumplen con la condición son #{ret}"
 
cada dígito.each do |dígito|
   imprimir "en el ciclo #{dígito}"
end

El resultado de ejecutar el ejemplo anterior es:

verdadero
El valor mínimo es 0
El valor máximo es 9
Los que no cumplen con la condición son [5, 6, 7, 8, 9]
en el ciclo 0
en el ciclo 1
en el ciclo 2
en el ciclo 3
en el ciclo 4
en el ciclo 5
en el ciclo 6
en el ciclo 7
en el ciclo 8
en el ciclo 9

como rango de condición

El rango también se puede usar como expresión condicional. Por ejemplo, el siguiente fragmento de código imprime las líneas de entrada estándar, donde la primera línea de cada conjunto contiene la palabra inicio,la última línea contiene la palabra final.:

mientras se obtiene
   imprimir si /inicio/../end/
end

El rango se puede usar en la declaración caso:

Ejemplo en línea

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
puntuación = 70
 
result = caso puntuación
when 0..40
    "Puntuación baja"
when 41..60
    "Casi aprobado"
when 61..70
    "Puntuación aprobada"
when 71..100
       "Puntuación buena"
else
    "Puntuación incorrecta"
end
 
puts result

El resultado de ejecutar el ejemplo anterior es:

Puntuación aprobada

Rango como intervalo

El último uso del rango es la detección de intervalos: verificar si un valor específico está dentro de un rango específico. Se debe usar el operador de igualdad === para completar el cálculo.

Ejemplo en línea

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
if (1..10) ==== 5)
  puts ""5 en (1..10)"
end
 
if "('a'..'j') === 'c'
  puts "c en ('a'..'j')"
end
 
if "('a'..'j') === 'z'
  puts "z en ('a'..'j')"
end

El resultado de ejecutar el ejemplo anterior es:

5 en (1..10)
c en ('a'..'j')