There is the if
statement similar to any other language you came from
1
2
3
4
5
something_evil_lurking_in_the_dark = false
if something_evil_lurking_in_the_dark
puts "Run away!"
end
Now, let’s negate that
1
2
3
if not something_evil_lurking_in_the_dark
puts "We are safe!"
end
Ruby has an alternative to if not
which is unless
1
2
3
unless something_evil_lurking_in_the_dark
puts "We are safe!"
end
We can also use the good old else
and elseif
. While we can use those with unless
, it doesn’t make much sense because you can simply reverse your if statement
1
2
3
4
5
if something_evil_lurking_in_the_dark
puts "Run away..."
else
puts "We are safe!"
end
This last example can be written as a one liner, but we will need a new keyword then
1
if something_evil_lurking_in_the_dark then puts "Run away..." else puts "We are safe!" end
We can write tye same thing using ternary operator
1
something_evil_lurking_in_the_dark ? (puts "Run away..." ): (puts "We are safe!")
Modifier form
Ruby has a modifier form of its conditionals. What that does is reversing the order of the statement to make it more “readable” or rather look like the common English language
1
puts "We are safe!" unless something_evil_lurking_in_the_dark
Even further, we can use the same form with assignment
1
2
message = "We are safe"
message = "Run away!!" if something_evil_lurking_in_the_dark
The value of message
will change only if the value of something_evil_lurking_in_the_dark
is true
.
Conditionals Are Expressions Not Statements
What does that mean?
1
2
some_value = if true then 4 else 6 end
puts some_value # This puts `4`
Yes, if in Ruby evaluate to some value and thus you can do the above. Actually the example where we used puts
above can be rewritten as:
1
puts (if something_evil_lurking_in_the_dark then "Run away..." else "We are safe!" end)
or
1
puts something_evil_lurking_in_the_dark ? "Run away..." : "We are safe!"
or
1
2
3
4
5
result = if something_evil_lurking_in_the_dark
"Run away..."
else
"We are safe!"
end
Comments powered by Disqus.