Bird
Raised Fist0
Rubyprogramming~15 mins

Instance variables (@) in Ruby - Mini Project: Build & Apply

Choose your learning style10 modes available
Using Instance Variables (@) in Ruby Classes
📖 Scenario: Imagine you are creating a simple program to keep track of a book's details in a library system. Each book has a title and an author.
🎯 Goal: You will build a Ruby class called Book that uses instance variables to store the title and author of a book. Then, you will create an object of this class and display its details.
📋 What You'll Learn
Create a class named Book
Use instance variables @title and @author inside the class
Write an initialize method to set these instance variables
Create a method details that returns a string with the book's title and author
Create an object of Book with exact title 'The Ruby Way' and author 'Hal Fulton'
Print the details of the book object
💡 Why This Matters
🌍 Real World
Instance variables are used in real-world programs to store information unique to each object, like details of books, users, or products.
💼 Career
Understanding instance variables is essential for Ruby developers working on web applications, automation scripts, or any object-oriented programming tasks.
Progress0 / 4 steps
1
Create the Book class with an initialize method
Create a class called Book with an initialize method that takes two parameters: title and author. Inside the method, assign these parameters to instance variables @title and @author.
Ruby
Hint

Remember, instance variables start with @ and store data inside the object.

2
Add a method details to return book information
Inside the Book class, add a method called details that returns a string in the format: "Title: [title], Author: [author]" using the instance variables @title and @author.
Ruby
Hint

Use string interpolation with #{} to include instance variables inside the string.

3
Create a Book object with given title and author
Create a variable called my_book and assign it a new Book object with the title 'The Ruby Way' and author 'Hal Fulton'.
Ruby
Hint

Use ClassName.new(arguments) to create a new object.

4
Print the details of the my_book object
Write a puts statement to print the result of calling the details method on the my_book object.
Ruby
Hint

Use puts object.method to print the returned string.

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