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

Range (Range) Ruby

Intervalo (Range) em todos os lugares: a até z, 0 até 9e assim por diante. O Ruby suporta intervalos e nos permite usá-los de várias maneiras:

  • como sequência do intervalo

  • como condição do intervalo

  • Intervalo como faixa

como sequência do intervalo

A primeira e mais comum utilização do intervalo é expressar sequências. As sequências têm um ponto de partida, um ponto final e uma maneira de gerar valores contínuos na sequência.

O Ruby usa ".." e "..." Os operadores de intervalo criam essas sequências. O formato de dois pontos cria um intervalo que contém o valor especificado no ponto superior, enquanto o formato de três pontos cria um intervalo que não contém o valor especificado no ponto superior.

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

sequência 1..100 é uma Range objeto, que contém dois Fixnum referência de objeto. Se necessário, você pode usar to_a metodos convertem o intervalo em lista. Tente o exemplo a seguir:

Exemplo Online

#!/usr/bin/ruby
 
$, = ",", "    # Separador de valores do array
range1 = (1..10).to_a
range2 = ('bar'..'bat').to_a
 
puts "#{range1"
puts "#{range2"

O resultado de execução do exemplo acima é:

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

O intervalo implementou métodos para percorrê-lo, você pode verificar seu conteúdo de várias maneiras:

Exemplo Online

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
# Especificar intervalo
digits = 0..9
 
puts digits.include?(5)
ret = digits.min
puts "O valor mínimo é #{ret}"
 
ret = digits.max
puts "O valor máximo é #{ret}"
 
ret = digits.reject { |i| i < 5 }
puts "Os que não atendem às condições são #{ret}"
 
digits.each do |digit|
   puts "no loop #{digit}"
end

O resultado de execução do exemplo acima é:

true
O valor mínimo é 0
O valor máximo é 9
Os que não atendem às condições são [5, 6, 7, 8, 9]
no loop 0
no loop 1
no loop 2
no loop 3
no loop 4
no loop 5
no loop 6
no loop 7
no loop 8
no loop 9

como condição do intervalo

O intervalo também pode ser usado como expressão de condição. Por exemplo, o trecho de código a seguir imprime linhas da entrada padrão, onde a primeira linha de cada conjunto contém a palavra start,a última linha contém a palavra end.:

while gets
   print if /start/../end/
end

O intervalo pode ser usado em instruções case:

Exemplo Online

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
score = 70
 
result = case score
when 0..40
    "Nota má"
when 41..60
    "Próximo de Aprovação"
when 61..70
    "Nota Aprovação"
when 71..100
       "Nota boa"
else
    "Nota incorreta"
end
 
puts result

O resultado de execução do exemplo acima é:

Nota Aprovação

Intervalo como faixa

O último uso do intervalo é para verificação de intervalo: verificar se um valor específico está dentro do intervalo especificado. É necessário usar o operador de equivalência === para completar o cálculo.

Exemplo Online

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

O resultado de execução do exemplo acima é:

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