Séries (Ranges)
O primeiro e talvez o mais natural uso das séries (intervalos ou, em inglês, ranges) é para expressar uma sequência. Sequências tem um ponto de início, um ponto de término e um modo de produzir valores sucessivos na sequência. No Ruby, essas sequências são criadas usando os operadores de intervalo “..” e “…”. A forma com dois pontos cria uma série inclusiva e a forma de três pontos cria uma série que exclui o valor mais alto especificado. No Ruby as séries não são interpretadas internamente como listas: a sequência 1..100000 é armazenada como um objeto do tipo Range contendo referências a dois objetos Fixnum. Remeta-se ao programa p021ranges.rb. Caso você precise, é possível converter uma série para uma lista (array) usando o método to_a.
1 (1..10).to_a -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Séries implementam métodos que permitem que você itere sobre elas e teste seus conteúdos de diversas maneiras.
1 # p021ranges.rb 2 =begin 3 Sequências tem um ponto de início, de término 4 e um modo de produzir valores sucessivos 5 No Ruby, essas sequências são criadas usando os 6 operadores de intervalo ".." e "...". 7 A forma com dois pontos cria uma série 8 inclusiva e a forma de três pontos cria uma 9 série que exclui o valor mais alto especificado. 10 =end 11 digitos = -1..9 12 puts digitos.include?(5) # true 13 puts digitos.min # -1 14 puts digitos.max # 9 15 puts digitos.reject {|i| i < 5 } # [5, 6, 7, 8, 9]
Outro uso do versátil Range é para testar um intervalo: verificar se algum valor está dentro do intervalo representado pela série. Fazemos isso usando o operador de igualdade ===.
1 (1..10) === 5 -> true 2 (1..10) === 15 -> false 3 (1..10) === 3.14159 -> true 4 ('a'..'j') === 'c' -> true 5 ('a'..'j') === 'z' -> false
Este material tem como base o tutorial do RubyLearning.com de Satish Talim e foi traduzido por membros do GURU-SP com a permissão do autor.
Ajude o RubyLearning participando em algum dos cursos pagos ou fazendo uma doação para o projeto