The initialize method sets up a new object with starting values automatically when you create it. It helps prepare the object to be used right away.
When you want to give an object some starting information as soon as it is made.
When you want to make sure certain values are always set for an object.
When you want to avoid setting values manually after creating an object.
When you want to create many objects with different starting values easily.
Syntax
Ruby
class ClassName
definitialize(parameters)
# set up instance variablesendend
The initialize method is called automatically when you use ClassName.new.
Use @variable to store values inside the object.
Examples
This example sets a person's name when you create a new Person.
Ruby
class Person
definitialize(name)
@name = name
endend
This example sets both the make and year of a car when it is created.
Ruby
class Car
definitialize(make, year)
@make = make
@year = year
endend
Sample Program
This program creates a Dog object with a name and breed using initialize. Then it prints the dog's details.
Ruby
class Dog
definitialize(name, breed)
@name = name
@breed = breed
enddef info
"Dog's name is #{@name} and breed is #{@breed}."endend
dog = Dog.new("Buddy", "Golden Retriever")
puts dog.info
OutputSuccess
Important Notes
You do not call initialize directly; Ruby calls it when you create a new object.
Instance variables like @name keep data inside the object for later use.
Summary
initialize sets up new objects automatically.
It helps give objects starting values.
Use instance variables inside initialize to store data.
Practice
(1/5)
1. What is the purpose of the initialize method in a Ruby class?
easy
A. It sets up initial values for a new object automatically.
B. It deletes an object from memory.
C. It prints the object details to the screen.
D. It defines a class method.
Solution
Step 1: Understand the role of initialize
The initialize method is called automatically when a new object is created.
Step 2: Recognize what initialize does
It sets starting values for the object's instance variables, preparing the object for use.
Final Answer:
It sets up initial values for a new object automatically. -> Option A
Quick Check:
initialize sets starting values [OK]
Hint: Remember: initialize runs when you create a new object [OK]
Common Mistakes:
Thinking initialize deletes objects
Confusing initialize with printing methods
Believing initialize defines class methods
2. Which of the following is the correct way to define an initialize method in Ruby?
easy
A. def initialize(name)
@name = name
end
B. def Initialize(name)
@name = name
end
C. initialize def(name)
@name = name
end
D. def init(name)
@name = name
end
Solution
Step 1: Check method naming conventions
Ruby requires the constructor method to be named exactly initialize in lowercase.
Step 2: Verify method syntax
def initialize(name)
@name = name
end correctly defines def initialize(name) and assigns the instance variable @name.
Final Answer:
def initialize(name)\n @name = name\nend -> Option A
Quick Check:
Method name must be initialize lowercase [OK]
Hint: Use lowercase 'initialize' exactly to define constructor [OK]
Common Mistakes:
Capitalizing 'Initialize' instead of 'initialize'
Using wrong method syntax order
Naming method 'init' instead of 'initialize'
3. What will be the output of this Ruby code?
class Person
def initialize(name)
@name = name
end
def greet
"Hello, #{@name}!"
end
end
p = Person.new("Alice")
puts p.greet
medium
A. Hello, @name!
B. Hello, Alice!
C. Hello, !
D. Error: undefined method greet
Solution
Step 1: Understand object creation and initialization
The Person.new("Alice") calls initialize with "Alice", setting @name to "Alice".
Step 2: Check the greet method output
The greet method returns "Hello, #{@name}!" which becomes "Hello, Alice!" when printed.
Final Answer:
Hello, Alice! -> Option B
Quick Check:
Instance variable set in initialize used in greet [OK]
Hint: Instance variables set in initialize are accessible in other methods [OK]
Common Mistakes:
Expecting '@name' to print literally
Forgetting to call greet method
Confusing instance variable scope
4. Identify the error in this Ruby class definition:
class Car
def initialize(make, model)
make = make
model = model
end
end
car = Car.new("Toyota", "Corolla")
puts car.make
medium
A. The initialize method should not have parameters.
B. The puts statement should be puts car.model
C. The class name should be lowercase.
D. Instance variables are not assigned; should use @make and @model.
Solution
Step 1: Check variable assignment in initialize
The code assigns local variables make = make and model = model, which do nothing to the object.
Step 2: Correct usage of instance variables
To store values in the object, it should assign @make = make and @model = model.
Final Answer:
Instance variables are not assigned; should use @make and @model. -> Option D
Quick Check:
Use @variable to store data in object [OK]
Hint: Use @ before variable to save it in the object [OK]
Common Mistakes:
Assigning to local variables instead of instance variables
Thinking parameters auto become instance variables
Wrong class naming conventions
5. You want to create a Ruby class Book that stores title and author when a new book is created. Which code correctly uses initialize to do this and allows reading these values later?
hard
A. class Book
def initialize(title, author)
@title = title
@author = author
end
def title
title
end
end
B. class Book
def initialize(title, author)
title = title
author = author
end
end
C. class Book
attr_reader :title, :author
def initialize(title, author)
@title = title
@author = author
end
end
D. class Book
def initialize(title, author)
@title = title
@author = author
end
def get_title
@title
end
end
Solution
Step 1: Check instance variable assignment
Three options assign @title = title and @author = author correctly in initialize.
Step 2: Verify how values are accessed
class Book
attr_reader :title, :author
def initialize(title, author)
@title = title
@author = author
end
end uses attr_reader to create getter methods for both title and author, allowing easy access.
Step 3: Identify issues in other options
class Book
def initialize(title, author)
title = title
author = author
end
end does not assign instance variables, so values are lost. class Book
def initialize(title, author)
@title = title
@author = author
end
def title
title
end
end's title method returns local variable title which is undefined. class Book
def initialize(title, author)
@title = title
@author = author
end
def get_title
@title
end
end only provides a getter for title, not author.
Final Answer:
class Book
attr_reader :title, :author
def initialize(title, author)
@title = title
@author = author
end
end -> Option C
Quick Check:
Use attr_reader with instance variables for easy access [OK]
Hint: Use attr_reader to read instance variables easily [OK]
Common Mistakes:
Not assigning instance variables in initialize
Returning undefined local variables in getter methods
Missing getter methods for instance variables
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.