Bird
Raised Fist0
Rubyprogramming~5 mins

Self keyword behavior in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the self keyword represent inside an instance method in Ruby?

Inside an instance method, self refers to the current object (instance) on which the method is called.

Click to reveal answer
beginner
How does <code>self</code> behave inside a class method in Ruby?
<p>Inside a class method, <code>self</code> refers to the class itself, not an instance.</p>
Click to reveal answer
intermediate
What is the value of <code>self</code> at the top level of a Ruby program (outside any class or method)?

At the top level, self refers to the main object, which is an instance of Object.

Click to reveal answer
beginner
Can self be reassigned to another object inside a method?

No, self is a special keyword and cannot be reassigned to a different object inside a method.

Click to reveal answer
intermediate
How does self help when defining setter methods in Ruby?

Using self.attribute = value inside a method calls the setter method instead of creating a local variable.

Click to reveal answer
Inside an instance method, what does self refer to?
AThe class itself
BThe current object (instance)
CThe main object
DA local variable
What does self refer to inside a class method?
AThe current instance
BThe main object
CA global variable
DThe class itself
At the top level of a Ruby program, self is:
AThe main object
BAn instance of the current class
CNil
DThe class object
Why do we use self.attribute = value inside a method?
ATo create a local variable
BTo call a class method
CTo call the setter method
DTo reassign <code>self</code>
Can you assign a new object to self inside a method?
ANo, <code>self</code> is special and cannot be reassigned
BOnly in class methods
COnly at the top level
DYes, anytime
Explain how the self keyword behaves differently inside instance methods, class methods, and at the top level in Ruby.
Think about what object is 'current' in each context.
You got /3 concepts.
    Describe why using self.attribute = value inside a method is important compared to just writing attribute = value.
    Consider how Ruby decides between local variables and method calls.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the self keyword represent inside an instance method in Ruby?
      easy
      A. The superclass of the current class
      B. The class itself
      C. A global variable
      D. The current instance (object) of the class

      Solution

      1. Step 1: Understand instance methods context

        Inside an instance method, the code runs for a specific object created from the class.
      2. Step 2: Identify what self points to

        In this context, self refers to that specific object (instance) running the method.
      3. Final Answer:

        The current instance (object) of the class -> Option D
      4. Quick Check:

        self in instance method = instance [OK]
      Hint: Inside instance methods, think "self" means the object itself [OK]
      Common Mistakes:
      • Confusing self with the class inside instance methods
      • Thinking self is a global or class variable
      • Assuming self is always the class
      2. Which of the following is the correct way to define a class method using self in Ruby?
      easy
      A. def self.my_method; 'hello'; end
      B. def my_method.self; 'hello'; end
      C. def my_method(self); 'hello'; end
      D. def self:my_method; 'hello'; end

      Solution

      1. Step 1: Recall class method syntax

        Class methods are defined by prefixing the method name with self. inside the class.
      2. Step 2: Check each option's syntax

        def self.my_method; 'hello'; end uses def self.my_method which is correct syntax. Others are invalid Ruby syntax.
      3. Final Answer:

        def self.my_method; 'hello'; end -> Option A
      4. Quick Check:

        Class method syntax = def self.method_name [OK]
      Hint: Class methods start with def self.method_name [OK]
      Common Mistakes:
      • Placing self after method name
      • Using colon instead of dot
      • Passing self as a parameter
      3. What will be the output of the following Ruby code?
      class Dog
        def speak
          self.class
        end
      end
      
      fido = Dog.new
      puts fido.speak
      medium
      A. Dog
      B. #
      C. fido
      D. Object

      Solution

      1. Step 1: Understand what self is inside speak

        Inside the instance method speak, self is the instance fido.
      2. Step 2: Evaluate self.class

        Calling class on the instance returns its class, which is Dog.
      3. Final Answer:

        Dog -> Option A
      4. Quick Check:

        self.class in instance method = class name [OK]
      Hint: self.class inside instance method returns the object's class [OK]
      Common Mistakes:
      • Thinking self.class returns the instance
      • Confusing class with object name
      • Expecting output to be an object instead of class name
      4. Identify the error in this Ruby code snippet:
      class Cat
        def self.meow
          puts "Meow!"
        end
      
        def meow
          puts "Meow from instance"
        end
      
        def self.instance_meow
          meow
        end
      end
      
      Cat.instance_meow
      medium
      A. Missing self in instance method definition
      B. Calling instance method meow inside a class method without an instance
      C. Incorrect syntax for class method definition
      D. Using puts inside methods is not allowed

      Solution

      1. Step 1: Analyze method calls inside self.instance_meow

        This is a class method trying to call meow without specifying an instance.
      2. Step 2: Understand method types

        meow without self. is an instance method, so it needs an object to call it on.
      3. Step 3: Identify the error

        Calling an instance method directly inside a class method causes a NoMethodError because no instance is given.
      4. Final Answer:

        Calling instance method meow inside a class method without an instance -> Option B
      5. Quick Check:

        Class methods cannot call instance methods without an object [OK]
      Hint: Class methods need an instance to call instance methods [OK]
      Common Mistakes:
      • Trying to call instance methods directly inside class methods
      • Confusing self in class vs instance methods
      • Ignoring need for object to call instance methods
      5. Given the following Ruby code, what will be the output?
      class Calculator
        def self.description
          "I am a Calculator"
        end
      
        def initialize(value)
          @value = value
        end
      
        def show_description
          self.class.description
        end
      end
      
      calc = Calculator.new(10)
      puts calc.show_description
      hard
      A. NoMethodError
      B. "Calculator"
      C. "I am a Calculator"
      D. "10"

      Solution

      1. Step 1: Understand self.class.description inside instance method

        Inside show_description, self is the instance calc. Calling class returns the class Calculator.
      2. Step 2: Call class method description

        Calling description on the class returns the string "I am a Calculator".
      3. Final Answer:

        "I am a Calculator" -> Option C
      4. Quick Check:

        Instance calls class method via self.class = output string [OK]
      Hint: Use self.class to call class methods from instances [OK]
      Common Mistakes:
      • Expecting instance variable value instead of class method output
      • Confusing self with class inside instance methods
      • Thinking NoMethodError will occur
      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