Ruby – Números e Ranges

Ranges

Ruby ao contrário de algumas linguagens tem ranges (“Gamas”), um range é um intervalo com um valor inicial e um valor final. Para isso temos operadores de Range e a classe Range.

Podemos criar um Range de duas formas, uma é utilizando a classe Range

rag = Range.new(1,9)

A expressão acima cria um Range com os valores de 1 a 9 inclusive, mas é possivél criar Ranges de forma mais simples utilizando (..) e (…)

rag = (1..9)

Esta expressão faz exactamente o mesmo que a anterior, basta utilizar parênteses e (..) para ter um Range de 1 a 9, caso quisesse-mos nãuo incluir o 9 no nosso Range bastaria trocar o (..) por (…), ou seja com (..) é incluido o ultimo valor e com (…) o ultimo valor é excluído.

O método === determina se um valor está contido nos valores do Range para isso basta por exemplo

(1..25) === 14
=> true

(1..25) === 26
=> false

Ranges permite-nos ainda a sua conversão para um arrays de forma simples, para isso basta utilizar o método to_a e é criado um array com os valores do Range.

(1..9).to_s
=> [1,2,3,4,5,6,7,8,9]

Sobre os Números

Algumas vezes precisamos algumas coisas sobre os números ou as variáveis. Se é inteiro, se é ou não zero, etc…
Vamos começar com coisas simples, por exemplo verificar se um numero é igual ou não a zero.

op = 0

op.zero?
=> true

op = 10

op.zero?
=> false

É ainda possível verificar se um numero é inteiro ou não, a classe Numeric fornece o método integer? que verifica se um numero é inteiro.

12.integer?
=> true

12.0.integer?
=> false

-1.integer?
=> true

-12.integer?
=> true

A classe Float dispõe ainda dos métodos finite? e infinite?, que permite verificar se um numero é ou não infinito ou finito.

0.0.finite?
=> true

(-1.0/0.0).finite?
=> false

(+1.0/0.0).finite?
=> false

0.0.infinite?
=> nil

(-1.0/0.0).infinite?
=> -1

(+1.0/0.0).infinite?
=> 1

O método infinite? permite ter mais algumas informações sobre o numero infinito, por exemplo saber se é um infinito positivo, negativo ou neutro.

É possível ainda executar blocos de código sob números, os blocos de código serão analisados em outro capitulo, mas aqui veres alguns exemplos simples dos métodos para blocos de código existentes nas classes numéricas.
O método times cria uma iteração de 0 até ao valor, neste caso vamos usar o valor 5

5.times{ |i| print i, " "}
=> 0 1 2 3 4

Neste exemplo o bloco de código faz print para cada um dos valores da iteração.

A classe Integer dispõe ainda dois métodos muito úteis, o método downto e o método upto.
O método downto  permite  criar uma iteração  de um valor inicial até um valor final, por exemplo queremos todos os números de 100 até 1.

100.downto(1) { |n| print n}

O método upto faz o mesmo mas de forma inversa ou seja faz a iteração por ordem crescente, neste caso de 1 até 100.

1.upto(100) { |n| print n}

Por Fábio Correia (White Magician)

Anúncios

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s