what is the point of return in Ruby?
Using "return" is unnecessary if it is the last line to be executed in the method, since Ruby automatically returns the last evaluated expression.
You don't even need that final "mood", nor do you need those assignments in the IF statement.
def write_code(number_of_errors)
if number_of_errors > 1
"ERROR"
else
"No Problem"
end
end
puts write_code(10)
Output:
ERROR
return
allows you to break out early:
def write_code(number_of_errors)
return "No problem" if number_of_errors == 0
badness = compute_badness(number_of_errors)
"WHAT?! Badness = #{badness}."
end
If number_of_errors == 0
, then "No problem"
will be returned immediately. At the end of a method, though, it's unnecessary, as you observed.
Edit: To demonstrate that return
exits immediately, consider this function:
def last_name(name)
return nil unless name
name.split(/\s+/)[-1]
end
If you call this function as last_name("Antal S-Z")
, it will return "S-Z"
. If you call it as last_name(nil)
, it returns nil
. If return
didn't abort immediately, it would try to execute nil.split(/\s+/)[-1]
, which would throw an error.