English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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:
#!/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:
#!/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
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:
#!/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
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.
#!/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')