Exercise 21: Functions Can Return Something
You have been using the
= character to name variables and set them
to numbers or strings. We're now going to blow your mind again by
showing you how to use
= to set variables to be a value from a
function. There will be one thing to pay close attention to, but first
type this in:
We are now doing our own math functions for
divide. The important thing to notice is the last
line where we say
a + b (in
add). What this does is the
- Our function is called with two arguments:
- We print out what our function is doing, in this case "ADDING".
- Then we tell Ruby to do something kind of backward: we return the
a + b. You might say this as, "I add a and b then return them." In Ruby, the last evaluated statement in a method is its return value. You can be more explicit if you want and type
return a + b, but that is totally optional.
- Ruby adds the two numbers. Then when the function ends any line that runs it will be able to assign this a + b result to a variable.
As with many other things in this book, you should take this real slow, break it down and try to trace what's going on. To help there's extra credit to get you to solve a puzzle and learn something cool.
What You Should See
$ ruby ex21.rb Let's do some math with just functions! ADDING 30 + 5 SUBTRACTING 78 - 4 MULTIPLYING 90 * 2 DIVIDING 100 / 2 Age: 35, Height: 74, Weight: 180, IQ: 50 Here is a puzzle. DIVIDING 50 / 2 MULTIPLYING 180 * 25 SUBTRACTING 74 - 4500 ADDING 35 + -4426 That becomes: -4391 Can you do it by hand? $
- If you aren't really sure what return values are, try writing a few
of your own functions and have them return some values. You can
return anything that you can put to the right of an
- At the end of the script is a puzzle. I'm taking the return value of one function, and using it as the argument of another function. I'm doing this in a chain so that I'm kind of creating a formula using the functions. It looks really weird, but if you run the script you can see the results. What you should do is try to figure out the normal formula that would recreate this same set of operations.
- Once you have the formula worked out for the puzzle, get in there and see what happens when you modify the parts of the functions. Try to change it on purpose to make another value.
- Finally, do the inverse. Write out a simple formula and use the functions in the same way to calculate it.
This exercise might really whack your brain out, but take it slow and easy and treat it like a little game. Figuring out puzzles like this is what makes programming fun, so I'll be giving you more little problems like this as we go.