I’m currently reading The Ruby Programming Language, and I am not sure how to read Ruby-esque if else statements properly. Can you help me write the ruby code below in the second code block in regular if-else statements like this?
if some_condition
return x
else
return y
end
So the ruby codes I am unsure of are these.
minimum = if x < y then x else y end
max = x > y ? x : y
Thank you!
Both of the forms you seem to be having difficulty with make use of an idea Ruby takes from the Functional Programming paradigm: namely, Everything is an expression, and therefore returns a value. This is even true for conditional statements, an idea that languages like Java don’t really support (for example:
simply isn’t syntactically valid).
You can see this in a Ruby terminal:
So, to your question.
The first one can be rewritten like this:
The second is like the ternary operator in other languages, and is equivalent to:
It’s helpful to remember the roots & heritage of languages when trying to understand their constructs. Ruby shares the “More Than One Way To Do It” philosophy with Perl, and idiomatic Ruby code often has a high emphasis on elegance.
The “post-expression”-style conditionals are a good example of this. If I have guard expressions at the start of my methods, it’s not uncommon for me to write:
instead of