Welcome to day 20 of the 49 Days of Ruby! 🎉
Today is all about giving Ruby some class, but with a capital "C"!
First, let's define what a class is:
A class is a template for your code.
In the simplest terms, that is precisely what a class is. It gives your code a blueprint that can be used to make something with.
Let's take an example of a blueprint for a dog:
class Dog end
With the above example, we have created a
class, a template for a dog. However, what if we want our future dogs to be part of a certain breed? Right now, our class makes an undefined dog. Let's fix that:
class Dog def initialize(breed) @breed = breed end end
#initialize method in Ruby is a special method the language provides that you can use in your class creation to define the elements of your template. You provide
#initialize with the items you want every instance of your class to be created with, and when you instantiate those instances, you can define the details for those items then.
Thus, our new
Dog class now has a
breed attribute. You see that we don't tell the class what kind of breed, just that it should accept a
breed during instantiation:
poodle = Dog.new(breed: "poodle")
Now we have a new
poodle instance of our
Dog class! What if we wanted a bulldog as well? 🐶
bulldog = Dog.new(breed: "bulldog")
Now we also have a
What if you want to provide an attribute in your class definition that is true for all future instances? You can do that with a default value. Let's say we wanted all dogs to have a tail:
class Dog def initialize(breed, tail = true) @breed = breed @tail = tail end end
Now, all of our dogs from this class will have a
true value for a
That's it for today. Share your learning with the community on classes!
Come back tomorrow for the next installment of 49 Days of Ruby! You can join the conversation on Twitter with the hashtag #49daysofruby.