Ruby | Rangos

Prerrequisito: Operador de campo de Ruby

Los rangos de Ruby representan un conjunto de valores con un principio y un final. Los valores de un rango pueden ser números, caracteres, strings u objetos. Se construye usando start_point..end_point , start_point…endpoint literales, o con ::new . Proporciona flexibilidad al código y reduce el tamaño del código.

Ejemplo:

# Ruby program to demonstrate 
# the Range in Ruby
   
# Array value separator
$, =", " 
   
# using start_point..end_point
# to_a is used to convert it 
# into array
range_op = (7 .. 10).to_a
   
# displaying result
puts "#{range_op}"
   
# using start_point...end_point
# to_a is used to convert it 
# into array
range_op1 = (7 ... 10).to_a
   
# displaying result
puts "#{range_op1}"

Producción:

[7, 8, 9, 10]
[7, 8, 9]

Ruby proporciona los 3 tipos de rangos de la siguiente manera:

  1. Rangos como Secuencias
  2. Rangos como Condiciones
  3. Rangos como intervalos

Rangos como Secuencias

Esta es una forma general y fácil de definir los rangos en Ruby para producir valores sucesivos en la secuencia. Tiene un punto de inicio y un punto final. Se utilizan dos operadores para crear rangos, uno es el operador de punto doble (…) y el otro es el operador de punto triple (…) .

Ejemplo:

# Ruby program to illustrate the ranges as sequences
  
#!/usr/bin/ruby   
  
# input the value which lies between 
# the range 6 and 8    
ranges = 6..8   
  
# print true if the value is lies
# between the range otherwise 
# print false 
puts ranges.include?(3)
  
# print the maximum value which lies
# between the range 
ans = ranges.max   
puts "Maximum value = #{ans}"   
  
# print the minimum value which lies
# between the range 
ans = ranges.min   
puts "Minimum value = #{ans}"   
    
  
# Iterate 3 times from 6 to 8
# and print the value
ranges.each do |digit|   
   puts "In Loop #{digit}"   
end  

Producción:

false
Maximum value = 8
Minimum value = 6
In Loop 6
In Loop 7
In Loop 8

Rangos como Condiciones

Los rangos también se pueden definir como expresiones condicionales en bucle. Aquí las condiciones están encerradas dentro de las declaraciones de inicio y fin.

Ejemplo:

# Ruby program to illustrate the ranges as condition
  
#!/usr/bin/ruby
  
# given number
num = 4152  
    
result = case num   
   when 1000..2000 then "Lies Between 1000 and 2000"   
   when 2000..3000 then "Lies Between 2000 and 3000"
   when 4000..5000 then "Lies Between 4000 and 5000" 
   when 6000..7000 then "Lies Between 6000 and 7000" 
         
   else "Above 7000"   
end   
    
puts result   

Producción:

Lies Between 4000 and 5000

Rangos como intervalos

Los rangos también se pueden definir en términos de intervalos para verificar si el valor dado se encuentra dentro del intervalo o no. Está representado por el operador de igualdad (===) .

Ejemplo:

# Ruby program to illustrate the ranges as intervals
  
#!/usr/bin/ruby
  
# using if statement 
if (('A'..'Z') === 'D')
  
   # display the value
   puts "D lies in the range of A to Z"
  
# end of if
end
  
# using if statement 
if ((1..100) === 77)
  
  # display the value
  puts "77 lies in the range of 1 to 100"
  
# end of if
end

Producción:

D lies in the range of A to Z
77 lies in the range of 1 to 100

Nota: En Ruby, si intenta utilizar el operador de rango inverso, no se devolverá nada. Porque en los operadores de rango, si el valor del lado derecho es más pequeño que el valor del lado izquierdo, no devolvieron nada. Para imprimir un orden inverso del rango dado , siempre use el método reverse() con operadores de rango.

# Ruby program to print the reverse
# order using the range operator
  
#!/usr/bin/ruby
  
# using ranges
# but it will not give any output
puts ('Z'..'W').to_a 
   
# using reverse() method which will 
# print given range in the reverse order
puts ('W'..'Z').to_a.reverse   

Producción:

Z
Y
X
W

Publicación traducida automáticamente

Artículo escrito por Shivi_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *