Bird
Raised Fist0
Rubyprogramming~5 mins

Type checking with .class and .is_a? in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the .class method do in Ruby?
It returns the exact class of an object. For example, <code>5.class</code> returns <code>Integer</code>.
Click to reveal answer
intermediate
What is the difference between .class and .is_a? in Ruby?
<code>.class</code> checks the exact class of an object, while <code>.is_a?</code> checks if the object is an instance of a class or any of its parent classes (inheritance).
Click to reveal answer
intermediate
How does .is_a? help with inheritance?
It returns <code>true</code> if the object is an instance of the given class or any class it inherits from, making it useful to check for types in a family of classes.
Click to reveal answer
beginner
Example: What is the output of "hello".class and "hello".is_a?(String)?
The output of "hello".class is String. The output of "hello".is_a?(String) is true.
Click to reveal answer
intermediate
Can .is_a? return true for a superclass?
Yes, <code>.is_a?</code> returns <code>true</code> if the object is an instance of the class or any of its superclasses.
Click to reveal answer
What does obj.class return in Ruby?
AWhether obj is a string
BTrue if obj is a class
CThe superclass of obj
DThe exact class of obj
Which method checks if an object is an instance of a class or its parent classes?
A.is_a?
B.class
C.to_s
D.superclass
What will 5.is_a?(Numeric) return?
Afalse
Bnil
Ctrue
Derror
If obj.class == String is true, what does obj.is_a?(Object) return?
Afalse
Btrue
Cnil
Derror
Which method would you use to check if an object is exactly a certain class, not a subclass?
A.instance_of?
B.kind_of?
C.is_a?
D.class
Explain the difference between .class and .is_a? in Ruby with examples.
Think about checking exact type vs family of types.
You got /3 concepts.
    How can you use .is_a? to safely check an object's type in a program?
    Consider when you want to accept objects of related types.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the .class method return when called on an object in Ruby?
      easy
      A. Whether the object is a kind of a class
      B. The exact type (class) of the object
      C. The parent class of the object
      D. A boolean indicating if the object is a class

      Solution

      1. Step 1: Understand what .class does

        The .class method returns the exact class of the object it is called on.
      2. Step 2: Compare with other options

        Options A, C, and D describe behaviors of other methods or incorrect meanings.
      3. Final Answer:

        The exact type (class) of the object -> Option B
      4. Quick Check:

        .class returns exact type [OK]
      Hint: Remember: .class gives exact type, not inheritance [OK]
      Common Mistakes:
      • Confusing .class with .is_a?
      • Thinking .class returns boolean
      • Assuming .class returns parent class
      2. Which of the following is the correct syntax to check if variable x is an instance of the Integer class using .is_a??
      easy
      A. x.is_a?(Integer)
      B. x.is_a(Integer)
      C. x.is_a<Integer>
      D. x.is_a? Integer

      Solution

      1. Step 1: Recall the syntax of .is_a?

        The method .is_a? requires a class argument inside parentheses, like .is_a?(ClassName).
      2. Step 2: Check each option

        x.is_a?(Integer) uses correct syntax with parentheses and question mark. Options A, B, and D have syntax errors or missing parentheses.
      3. Final Answer:

        x.is_a?(Integer) -> Option A
      4. Quick Check:

        Use parentheses with .is_a? [OK]
      Hint: Always use parentheses with .is_a? method [OK]
      Common Mistakes:
      • Omitting parentheses after .is_a?
      • Using angle brackets instead of parentheses
      • Leaving out the question mark
      3. What will be the output of the following Ruby code?
      class Animal; end
      class Dog < Animal; end
      
      dog = Dog.new
      puts dog.class
      puts dog.is_a?(Animal)
      medium
      A. Dog true
      B. Animal true
      C. Dog false
      D. Animal false

      Solution

      1. Step 1: Understand dog.class

        The dog object is an instance of Dog, so dog.class returns Dog.
      2. Step 2: Understand dog.is_a?(Animal)

        Since Dog inherits from Animal, dog.is_a?(Animal) returns true.
      3. Final Answer:

        Dog true -> Option A
      4. Quick Check:

        .class exact type, .is_a? checks inheritance [OK]
      Hint: Remember: .class exact, .is_a? true for subclasses too [OK]
      Common Mistakes:
      • Thinking .class returns parent class
      • Assuming .is_a? false for subclasses
      • Confusing output order
      4. Identify the error in the following Ruby code snippet:
      num = 10
      if num.is_a?(Integer)
        puts "Number is integer"
      else
        puts "Number is not integer"
      end
      medium
      A. Syntax error in if statement
      B. Missing parentheses in is_a? call
      C. No error, code runs correctly
      D. Incorrect class name Integer

      Solution

      1. Step 1: Check is_a? usage

        The method .is_a? is correctly called with parentheses and the class Integer.
      2. Step 2: Verify syntax correctness

        The if statement and puts calls are syntactically correct.
      3. Final Answer:

        No error, code runs correctly -> Option C
      4. Quick Check:

        Correct syntax and usage means no error [OK]
      Hint: Check parentheses and class names carefully [OK]
      Common Mistakes:
      • Removing parentheses from is_a?
      • Using wrong class name like 'int'
      • Misplacing if-end keywords
      5. Given the following code, which option correctly filters only strings from the mixed array using .is_a??
      items = ["apple", 42, :symbol, "banana", 3.14]
      strings = items.select { |item| ??? }
      hard
      A. item.class != String
      B. item.class == String
      C. item.is_a?(Integer)
      D. item.is_a?(String)

      Solution

      1. Step 1: Understand filtering with .is_a?

        We want to select only elements that are strings, so we check if each item is a kind of String.
      2. Step 2: Compare options

        item.is_a?(String) uses .is_a?(String) which returns true for strings. item.class == String uses .class == String which also works but is less flexible if subclasses exist. Options C and D filter integers or non-strings, which is incorrect.
      3. Final Answer:

        item.is_a?(String) -> Option D
      4. Quick Check:

        Use .is_a?(String) to filter strings [OK]
      Hint: Use .is_a?(String) to include subclasses too [OK]
      Common Mistakes:
      • Using .class == String and missing subclasses
      • Filtering wrong types by mistake
      • Forgetting question mark in .is_a?
      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