En Ruby, nil
y false
significan falso, todo lo demás (incluyendo true
, 0
) significan verdadero. En Ruby, nil
es un objeto: por tanto, tiene sus métodos, y lo que es más, puedes añadir los métodos que se quieran.
Veamos un ejemplo de if,else
:
xyz = 5
if xyz > 4
puts 'La variable xyz es mayor que 4'
puts 'Puedo poner más instrucciones dentro del if'
if xyz == 5
puts 'Se puede anidar un bloque if,else,end dentro de otro'
else
puts "Parte del bloque anidado"
end
else
puts 'La variable xyz no es mayor que 4'
puts 'También puedo poner múltiples sentencias'
end
else
se ejecutaba si la condición en if
no se cumplía. Para poder tomar más decisiones, en función del valor de la variable, se usa elsif
:
#usando if,else anidados
puts 'Hola, cuál es tu nombre?'
STDOUT.flush
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
if nombre == 'Mojamuto'
puts 'Pedazo de nombre!!!'
else
if name == 'Enjuto'
puts '...este nombre no es moco de pavo...'
end
end
#usando elsif
puts 'Hola, cuál es tu nombre?'
STDOUT.flush
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
if nombre == 'Mojamuto'
puts 'Pedazo de nombre!!!'
elsif nombre == 'Enjuto'
puts '...este nombre no es moco de pavo...'
end
#otra modificación, usando el || ("o" lógico)
puts 'Hola, cuál es tu nombre?'
STDOUT.flush
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
if nombre = 'Mojamuto' || nombre = 'Enjuto'
puts 'Pedazo de nombre!!!'
end
Además de la igualdad, existen otros operadores condicionales:
operador | significado |
---|---|
== | igual |
!= | distinto |
>= | mayor o igual que |
<= | menor o igual que |
> | mayor que |
< | menor que |
Esta instrucción es muy parecida al if:
se crean una serie de condiciones, y se ejecuta la primera condición que se cumpla. Por ejemplo:
xyz = 10
if xyz % 2 == 0
puts 'La variable xyz es par'
else
puts 'La variable xyz es impar'
end
es equivalente a:
xyz = 10
par = case
when xyz % 2 == 0 then true
when xyz % 2 != 0 then false
end
puts par
unless
Ruby tiene una forma contraria al if:
la instrucción unless. Y digo contraria, por que en if
se ejecutaba el bloque do … end
si se cumplía la condición; con unless
se ejecutará el bloque mientras NO se cumpla.
nombre = 'Pepe'
unless nombre == 'Enjuto'
puts 'Ese nombre no tiene arte ninguno'
end
=begin
Si el nombre no es Enjuto,
siempre se ejecutará el bloque.
=end
Escribe un método que pregunte por un año, y sea capaz de: