Nesta aula iremos ver comandos como each, times, until, while, que são comandos utilizados para execução de loopings na linguagem ruby.
Estruturas de Repetição em Ruby(loop).
while
until
loop
times
for
each
map
Exemplo while
, note que o parênteses é opcional, enquanto index for menor que 5 ele irá imprimir o
valor de index na tela.
index = 0
while index < 5
puts index
end
Esse código imprime a mensagem 5 vezes no console incrementando o index a cada loop.
index = 0
puts "O index é #{index+=1}" while index < 5
Esse código imprime o valor de i na tela a cada loop.
10.times do |i|
puts i
end
Como de praxe copie o arquivo padrão das aulas anteriores para seguir conforme o padrão.
top = 4
now = 0
while now < top
puts "while #{now} .. #{top}"
now += 1
end
While em 1 linha
top = 4
now = 0
print "#{now+=1} " while now < top
print "\n"
Until
top = 4
now = 0
until now > top
puts "until #{now} .. #{top}"
now += 1
end
Until em 1 linha
top = 4
now = 0
puts "until #{now += 1} .. #{top}" until now >= top
Loop infinito
loop do |index|
puts "oi"
end
Para parar a execução use Control + C
Código com tratamento evitando o Loop infinito, ele vai "quebrar" o loop assim que index for maior que 20
index = 0
loop do
puts index
index += 1
break if index > 20
end
No código abaixo temos o comando next
que pula a execução pro próximo loop assim que a condição for verdadeira, neste caso pulando a exibição do numero 5 e 8, observe que desta forma devemos iterar antes do next para que não entre em loop infinito.
index = 0
loop do
index += 1
next if index == 5 or index == 8
puts index
break if index > 20
end
Times uma linha
5.times{ |index| puts index }
Times em bloco
5.times do |index|
puts index
end
For - esse script pega os numeros ímpares até 7
for i in 0..7
next if i % 2 == 0
puts i
end
Observação: O range 0..7
executa 8 vezes, para que execute somente 7 vezes deve utilizar três pontos no range: 0...7
Comparação do Times com For - esse script pega os numeros ímpares até 7
8.times do |i|
next if i % 2 == 0
puts i
end
Times - esse script pega os numeros pares até 7
8.times do |i|
next if i % 2 != 0
puts i
end
Each
(1..7).each{|i| puts i}
Observação: O range é um objeto, (0..7).class
retorna a classe Range
.
Select - Faz uma filtragem em um array com base num valor lógico
a = [1,2,3,4,5].select{|i| i > 4}
puts a.to_s
Map - Faz uma filtragem em um array de um dado já formatado
a = [1,2,3,4,5].map{|i| "oi - #{i}"}
puts a.to_s
Map com Each
a = [1,2,3,4,5].map{|i| "oi - #{i}"}
a.each do |i|
puts i
end
Nesta aula iremos aprender o como criar uma classe, uma instância e a ...
Nesta aula iremos aprender como criar propriedades em uma classe ruby,...
Nesta aula iremos aprender sobre herança, mais uma aula de orientação ...
Arquiteto de software, analista, programador, professor. Danilo criou o projeto torne-se um programador, para passar o seu conhecimento para a nova geração. Com o intuito de ser um bom pai, Danilo trabalha muito motivado para garantir o futuro de sua filha.