No Ruby também temos o operador ternário. Veja um exemplo de uso:
print "Digite um número: "
num = gets.to_i
verif = num % 2 == 0 ? "par" : "ímpar"
puts "O número #{num} é #{verif}."
Já o if, else e elsif usamos assim:
print "Digite um número: "
num = gets.to_i
if num < 20 then
puts "#{num} é menor que 20!"
elsif num > 20 then
puts "#{num} é maior que 20!"
else
puts "#{num} é igual à 20!"
end
Lembrando que elsif (que pode ter mais de um) e else não são obrigatórios.
Já o case, usamos assim:
print "Digite uma letra: "
letra = gets.strip[0].upcase
case letra
when "A", "E", "I", "O", "U"
verif = "vogal"
when "H", "W", "Y"
verif = "semivogal"
else
verif = "consoante ou outro caractere"
end
puts "A letra \"#{letra}\" é #{verif}."
O else seria o equivalente ao "default" nas linguagens C-like, e também não é obrigatório.
O unless exige que a condição seja falsa ao invés de verdadeira, como podem ver:
print "Digite um número: "
num = gets.to_i
unless num < 0 then
verif = "positivo"
else
verif = "negativo"
end
puts "O número #{num} é #{verif}."
O while funciona dessa forma no Ruby:
cont = 0
print "Digite um número: "
num = gets.to_i
while cont <= num do
puts cont
cont += 1 # Incremento
end
Podemos usar o break e o next (equivalente ao continue), da seguinte forma:
cont = 0
print "Digite um número: "
num = gets.to_i
while true do # Laço infinito
cont += 1 # Incremento
if cont % 2 == 1 then
next
elsif cont > num then
break
end
puts cont
end
Temos também o begin while (equivalente ao do while das linguagens C-like), que garante a execução de pelo menos uma vez do código, como podem ver:
cont = 0
print "Digite um número: "
num = gets.to_i
begin
puts cont
cont += 1 # Incremento
end while cont <= num
E o until, que exige que a condição retornada seja falsa ao invés de verdadeira, como podem ver:
cont = 0
print "Digite um número: "
num = gets.to_i
until cont > num do
puts cont
cont += 1 # Incremento
end
No Ruby também temos o for, e usamos ele simplesmente assim:
for i in 0..9 do
puts i
end
Para decremento, fazemos assim:
for i in 10.downto(0) do
puts i
end
Para incremento de 2 em 2:
for i in 0.step(10, 2) do # O que vai dentro do step é o fim, depois o incremento/decremento.
puts i
end
E decremento de 2 em 2:
for i in 10.step(0, -2) do
puts i
end
Arrays em Ruby podem ser declarado das seguintes formas:
arr1 = []
arr2 = Array.new
Os mesmos arrays com item e exibidos com puts:
arr1 = ["Item 1", "Item 2"]
arr2 = Array.new(3, "Item") # Criará um array de 3 posições com os item escrito "Item"
puts arr1
puts arr2
Para pegar determinado item do array, fazemos dessas formas:
vogais = ["A", "E", "I", "O", "U"]
puts vogais[0]
puts vogais.fetch(1)
Primeiro e último item do array:
vogais = ["A", "E", "I", "O", "U"]
puts vogais.first
puts vogais.last
Para pegar a quantidade de item de um array, podemos usar a propriedade length
(pode ser count
também):
vogais = ["A", "E", "I", "O", "U"]
puts vogais.length
Com isso, podemos fazer um laço pra exibir todos os item do array:
vogais = ["A", "E", "I", "O", "U"]
for i in 0..vogais.length do
puts vogais[i]
end
De forma mais simples, com for iterator:
vogais = ["A", "E", "I", "O", "U"]
for v in vogais do
puts v
end
Podemos adicionar itens diretamente pelo índice ou usando o método push
, e remover o último item usando pop
:
prato = ["Arroz", "Feijão", "Frango"]
prato[3] = "Batata"
prato.push("Salada")
for p in prato do
puts p
end
puts ""
prato.pop
for p in prato do
puts p
end
Usando insert e delete, pra incluir e excluir por posição, e include pra verificar se um item existe:
prato = ["Arroz", "Feijão", "Frango"]
prato.insert(2, "Farofa") # Posição e Item
for p in prato do
puts p
end
puts ""
prato.delete_at(2) # Deleta por posição
prato.delete("Frango") # Delete por item
puts prato.include? "Ovo" # Verifica se item existe no array
puts ""
for p in prato do
puts p
end
Uma matriz pode ser feita dessa forma:
numeros = [[0, 2, 4, 6, 8],
[1, 3, 5, 7, 9]]
for l in 0..2 do
for c in 0..5 do
print "#{numeros[l][c]} "
end
puts ""
end
PS: Podemos misturar tipos de variáveis em arrays.