Challenge - 5 Problems
Instance Methods Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of calling an instance method
What is the output of this Ruby code when calling the
greet method on an instance of the Person class?Ruby
class Person def initialize(name) @name = name end def greet "Hello, #{@name}!" end end person = Person.new("Alice") puts person.greet
Attempts:
2 left
💡 Hint
Instance methods can access instance variables using @variable_name.
✗ Incorrect
The
greet method returns a string that includes the instance variable @name. Since person was initialized with "Alice", the output is "Hello, Alice!".❓ Predict Output
intermediate2:00remaining
Instance method modifying state
What will be the output after running this Ruby code?
Ruby
class Counter def initialize @count = 0 end def increment @count += 1 end def current @count end end counter = Counter.new counter.increment counter.increment puts counter.current
Attempts:
2 left
💡 Hint
Each call to
increment adds 1 to @count.✗ Incorrect
The
increment method adds 1 to the instance variable @count. After calling it twice, @count is 2, so current returns 2.🔧 Debug
advanced2:00remaining
Why does this instance method raise an error?
This Ruby code raises an error when calling
display. What is the cause?Ruby
class Book def initialize(title) title = title end def display puts "Title: #{title}" end end book = Book.new("Ruby Guide") book.display
Attempts:
2 left
💡 Hint
Instance variables start with @ and are needed to keep data between methods.
✗ Incorrect
Inside
initialize, title = title assigns the parameter to a local variable, not an instance variable. The display method tries to use title which is undefined in that scope, causing an error.📝 Syntax
advanced2:00remaining
Identify the syntax error in this instance method
Which option correctly identifies the syntax error in this Ruby code?
Ruby
class Calculator def add(a, b) return a + b end def multiply(a, b) a * b # missing end here end calc = Calculator.new puts calc.add(2, 3)
Attempts:
2 left
💡 Hint
Every method definition must be closed with
end.✗ Incorrect
The
multiply method is missing its closing end, causing a syntax error.🚀 Application
expert3:00remaining
How many times is the instance method called?
Consider this Ruby code. How many times is the
log instance method called during execution?Ruby
class Logger def initialize @count = 0 end def log(message) @count += 1 puts "Log ##{@count}: #{message}" end def repeat_log(times, message) times.times { log(message) } end end logger = Logger.new logger.log("Start") logger.repeat_log(3, "Repeat") logger.log("End")
Attempts:
2 left
💡 Hint
Count each explicit call to
log, including inside loops.✗ Incorrect
The
log method is called once before repeat_log, then 3 times inside repeat_log, and once more after. Total calls: 1 + 3 + 1 = 5.