Case
def saludar(*nombres) # * indica un nombre indefinit d'arguments
case nombres.length
when 0
"Que triste, nadie ha leido mi tutorial"
when 1
"Hola #{nombres}. Por lo menos una persona quiere saber Ruby"
when 2..5
"Hola #{nombres.join(', ')}. Gracias por venir"
when 6..12
"#{nombres.length} lectores. Bienvenidos a Ruby!"
else
"Wow #{nombres.length} lectores. Cuanta gente!"
end
end
puts saludar('Alejandro', 'Luis', 'Pedro', 'Antonio', 'Guido', 'Matz, 'Satish')
# 7 lectores. Bienvendios a Ruby!
Condicionals
Ruby té estructures de control estándar. A més, es pot annexar una expressió.
# Estructura de control habitual...
if (1+1 == 2)
"Me gusta la escuela"
else
"Menuda sorpresa!"
end
#...que podemos anexar a la derecha
"Me gusta la escuela." if (1+1 == 2) # "Me gusta la escuela"
"Menuda sorpresa!" unless (1+1 == 2) # nil
(1+1 == 2) ? 'Correcto':'Incorrecto' # Correcto
prob_lluvia = rand(100) # 64 (por ejemplo)
case prob_lluvia
when 0...10 then "Probabilidad más baja"
when 10...50 then "Baja probabilidad"
when 50...90 then "Alta probabilidad"
when 90...100 then "Probabilidad más alta"
end # Alta probabilidad
Booleans
Únicament nil
i false
són falsos; tot el demás és vedader.
def es_true(valor)
puts valor ? true : false
end # nil
es_true(false) # false
es_true(nil) # false
es_true(true) # true
es_true(1) # true
es_true(0) # true
es_true([0,1,2]) # true
es_true('a'..'z') # true
es_true('') # true
es_true(:un_simbolo) # true
Bucles
Ruby té on elegir en les construccions de bucles, però cal no oblidar-se dels blocs.
i = 1 # 1
while (i < 10)
i *=2
end # nil
puts i # 16
i *= 2 while (i < 100) # nil
puts i # 128
begin
i *= 2
end while (i < 100) # nil
puts i # 256
i *=2 until (i >= 1000) # nil
puts i # 1024
loop do
break i if (i >= 4000)
i *= 2
end # 4096
puts i # 4096
4.times do i *= 2 end # 4
puts i # 65536
r = [] # []
for i in 0..7
next if i % 2 == 0
r << i
end # 0..7
puts r # [1, 3, 5, 7]
# Los bloques pueden simplificar muchas cosas
(0..7).select{ |i| % 2 != 0} # [1, 3, 5, 7]
Font: Ruby en 15 minutos