Variables
Variables
A VARIABLE is a NAME for an object. You give an object a name using the ASSIGNMENT operator (it looks like an equal sign).
color = "blue" fruit = "berry"
Anywhere you can use an object, you can use a variable instead.
color + fruit fruit.upcase
The Warehouse Metaphor
Think of memory as a giant warehouse.
The Warehouse Metaphor Explained
If memory is a giant warehouse...
...and objects are boxes in that warehouse
...then a value is the contents of a box
...and a variable is a label you stick on the outside of the box
Variables are documentation
Which is clearer, this:
60 * 60 * 24
or this:
seconds_per_minute = 60 minutes_per_hour = 60 hours_per_day = 24 seconds_per_day = seconds_per_minute * minutes_per_hour * hours_per_day
?
Lab: Play In IRB
Let's spend a few minutes just playing around in IRB. Some things to try:
- write a poem
- YELL THE POEM
- calculate 2 + 2 and more complicated things
- assign your best friend to a variable
- reverse your best friend's name
- get a new best friend and reverse her too
The Pointer Metaphor
snack = "Apple"
Think of a variable as pointing to an object.
Changing Variables
You can assign and reassign variables at will.
color = "blue" fruit = "berry" color + fruit color = "black" color + fruit
Changing a variable (using ASSIGNMENT) just changes the name of an object. It does not change the data inside the object.
Many pointers can point to the same thing
fruit = "Apple" snack = fruit
After this both snack
and fruit
...
- are pointing to the same object
- have the same value
Return values are new
most messages return new values
fruit = "banana" snack = fruit.upcase
"banana"
and "BANANA"
are two different objects in memory
Changing Values
Most messages do not change the data inside the object.
color.upcase color
But some messages do change the data!
color.upcase! color
This can be dangerous so sometimes those messages end with a BANG (exclamation point).