What is the difference between return
and just putting a variable such as the following:
def write_code(number_of_errors) if number_of_errors > 1 mood = "Ask me later" else mood = "No Problem" end mood end
def write_code(number_of_errors) if number_of_errors > 1 mood = "Ask me later" else mood = puts "No Problem" end return mood end
In Ruby, a method always return exactly one single thing (an object). The returned object can be anything, but a method can only return one thing, and it also always returns something. Every method always returns exactly one object.
Ruby methods ALWAYS return the evaluated result of the last line of the expression unless an explicit return comes before it. If you wanted to explicitly return a value you can use the return keyword.
A return statement ends the execution of a function, and returns control to the calling function. Execution resumes in the calling function at the point immediately following the call. A return statement can return a value to the calling function. For more information, see Return type.
The return keyword finished the execution of a method, and can be used to return a value from a method.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With