Bird
Raised Fist0
Rubyprogramming~10 mins

Instance variables (@) in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define an instance variable in the initialize method.

Ruby
class Person
  def initialize(name)
    [1] = name
  end
end
Drag options to blanks, or click blank then click option'
A@name
Bname
C$name
Dself.name
Attempts:
3 left
💡 Hint
Common Mistakes
Using a local variable instead of an instance variable.
Using global variable syntax ($) instead of instance variable (@).
2fill in blank
medium

Complete the code to access the instance variable inside a method.

Ruby
class Car
  def initialize(model)
    @model = model
  end

  def show_model
    puts [1]
  end
end
Drag options to blanks, or click blank then click option'
Amodel
Bself.model
C@model
D$model
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to access the variable without @.
Using global variable syntax ($) instead of instance variable (@).
3fill in blank
hard

Fix the error in the code by completing the instance variable assignment.

Ruby
class Book
  def initialize(title)
    [1] = title
  end

  def title
    @title
  end
end
Drag options to blanks, or click blank then click option'
A@title
Btitle
C$title
Dself.title
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning to a local variable instead of an instance variable.
Using global variable syntax ($) instead of instance variable (@).
4fill in blank
hard

Fill both blanks to create a method that updates and returns an instance variable.

Ruby
class User
  def initialize(age)
    @age = age
  end

  def birthday
    @age [1] 1
    return [2]
  end
end
Drag options to blanks, or click blank then click option'
A+=
B-=
C@age
Dage
Attempts:
3 left
💡 Hint
Common Mistakes
Using -= instead of +=.
Returning a local variable instead of the instance variable.
5fill in blank
hard

Fill all three blanks to define an instance variable, update it, and return it.

Ruby
class Counter
  def initialize(start)
    [1] = start
  end

  def increment
    [2] [3] 1
    return @count
  end
end
Drag options to blanks, or click blank then click option'
A@count
B+=
C-=
Dcount
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning to a local variable instead of an instance variable.
Using -= instead of +=.
Trying to update a variable without @.

Practice

(1/5)
1. What does an instance variable in Ruby always start with?
easy
A. An at symbol (@)
B. A dollar sign ($)
C. A hash symbol (#)
D. A percent sign (%)

Solution

  1. Step 1: Recall Ruby instance variable syntax

    Instance variables in Ruby always begin with the at symbol (@) to distinguish them from local variables.
  2. Step 2: Identify the correct symbol

    Among the options, only the at symbol (@) is used to start instance variables.
  3. Final Answer:

    An at symbol (@) -> Option A
  4. Quick Check:

    Instance variable starts with @ [OK]
Hint: Instance variables always start with @ in Ruby [OK]
Common Mistakes:
  • Confusing instance variables with global variables ($)
  • Using local variable syntax without @
  • Thinking instance variables start with # or %
2. Which of the following is the correct way to define an instance variable inside a Ruby class?
easy
A. var @name = 'Alice'
B. @name = 'Alice'
C. name = @'Alice'
D. def @name = 'Alice'

Solution

  1. Step 1: Understand instance variable assignment syntax

    In Ruby, instance variables are assigned by writing @variable_name = value inside methods or constructors.
  2. Step 2: Check each option

    @name = 'Alice' correctly assigns an instance variable. The other options use invalid syntax.
  3. Final Answer:

    @name = 'Alice' -> Option B
  4. Quick Check:

    Assign instance variable with @name = value [OK]
Hint: Assign instance variables with @name = value inside methods [OK]
Common Mistakes:
  • Adding var keyword (not used in Ruby)
  • Placing @ inside quotes
  • Using def keyword incorrectly
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('Bob')
puts p.greet
medium
A. Error: undefined variable
B. Hello, @name!
C. Hello, name!
D. Hello, Bob!

Solution

  1. Step 1: Understand instance variable assignment in initialize

    The initialize method sets @name to 'Bob' when Person.new('Bob') is called.
  2. Step 2: Evaluate greet method output

    The greet method returns a string with #{@name} replaced by the instance variable value 'Bob'.
  3. Final Answer:

    Hello, Bob! -> Option D
  4. Quick Check:

    Instance variable @name holds 'Bob' so output is Hello, Bob! [OK]
Hint: Instance variables keep data per object, used inside methods with @ [OK]
Common Mistakes:
  • Expecting literal '@name' in output
  • Confusing local and instance variables
  • Forgetting to use @ in string interpolation
4. Identify the error in this Ruby class code:
class Car
  def initialize(model)
    name = model
  end
  def show
    puts @name
  end
end

car = Car.new('Tesla')
car.show
medium
A. Syntax error in initialize method
B. Method show is missing return statement
C. Instance variable @name is not assigned, so nil is printed
D. Cannot call puts inside method

Solution

  1. Step 1: Check variable assignment in initialize

    The code assigns local variable name = model, not instance variable @name.
  2. Step 2: Understand effect on show method

    Since @name is never set, @name is nil, so puts prints an empty line (nil).
  3. Final Answer:

    Instance variable @name is not assigned, so nil is printed -> Option C
  4. Quick Check:

    Local variable assigned, not instance variable @name [OK]
Hint: Use @ to assign instance variables, not plain variable names [OK]
Common Mistakes:
  • Assigning local variable instead of instance variable
  • Expecting puts to fail without return
  • Thinking syntax error occurs here
5. You want to create a Ruby class Book that stores a title and author as instance variables. You also want a method description that returns "Title by Author". Which code correctly implements this?
hard
A. class Book def initialize(title, author) @title = title @author = author end def description "#{@title} by #{@author}" end end
B. class Book def initialize(title, author) title = @title author = @author end def description "#{title} by #{author}" end end
C. class Book def initialize(title, author) @title = title @author = author end def description "title by author" end end
D. class Book def initialize(title, author) @title = title @author = author end def description "#{title} by #{author}" end end

Solution

  1. Step 1: Assign instance variables correctly in initialize

    class Book def initialize(title, author) @title = title @author = author end def description "#{@title} by #{@author}" end end assigns @title and @author from parameters correctly. class Book def initialize(title, author) title = @title author = @author end def description "#{title} by #{author}" end end reverses assignment. The remaining options misuse variables in description.
  2. Step 2: Use instance variables in description method

    class Book def initialize(title, author) @title = title @author = author end def description "#{@title} by #{@author}" end end uses #{@title} and #{@author} inside string interpolation, correctly accessing instance variables.
  3. Final Answer:

    class Book def initialize(title, author) @title = title @author = author end def description "#{@title} by #{@author}" end end -> Option A
  4. Quick Check:

    Assign and use @variables inside methods for correct output [OK]
Hint: Assign and use instance variables with @ inside all methods [OK]
Common Mistakes:
  • Assigning variables backwards (param = @var)
  • Using local variables instead of instance variables in methods
  • Returning literal strings without interpolation
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard