So, the blog has been a bit quiet. But this doesn't mean that I haven't been getting some decent studying done.
As I mentioned in my first post, this isn't the first time I've studied Ruby (or programming in general) so I have a pretty good grasp on the basics. Nevertheless, I thought it'd be best to start from the beginning. Even if that meant re-covering a lot of material. My theory is that by sticking with one source at a time, I'll pick up on things that I might have missed by jumping from teacher-to-teacher.
For example, in one recent video, I actually picked up some new knowledge on variable assignment.
Assigning Multiple Variables to One Object
Let's pretend we're creating a video game. Each character is identified by a certain color. Our first character is blue:
> warrior_color = "blue" => "blue"
But what happens when we assign another character to our first variable:
> archer_color = warrior_color => "blue"
So right now, both of our characters have a color set to the string
"blue". If we call the
object_id method on both of these variables, we'll see that they are in fact both assigned to the same object.
> warrior_color.object_id => 2168461020 > archer_color.object_id => 2168461020
What happens if we start altering the object?
> # let's swap out the first letter of the first variable > warrior_color = "g" => "g" > warrior_color => "glue" > archer_color => "glue" > warrior_color.object_id => 2168461020 > archer_color.object_id => 2168461020 > # the actual object changed but both variables are still assigned to it
So far, all of this is pretty clear. But this this bit coming up is where I was a little surprised.
> warrior_color = "red" => "red" > warrior_color.object_id => 2168469920 > # new object, new object_id. did the archer_color variable change? > archer_color => "glue" > archer_color.object_id => 2168461020
What took me by surprise was that when I re-assigned the
warrior_color variable to
"red", I expected the
archer_color variable to change as well (just as it had when I swapped out the "b" for a "g"). Of course, this didn't happen. When I assigned the
warrior_color to a whole new variable, a brand new object was created. This did not affect the other variable,
archer_color, which still maintained the same