📖 Scenario: Imagine you have a simple calculator program. In Ruby, operators like + and - are actually methods. This means you can use them like any other method to add or subtract numbers.
🎯 Goal: You will create a simple Ruby program that shows how operators are methods by calling the + method directly on numbers.
📋 What You'll Learn
Create two variables with numbers
Create a variable that calls the + method on one number with the other as argument
Create a variable that calls the - method on one number with the other as argument
Print the results
💡 Why This Matters
🌍 Real World
Understanding that operators are methods helps you read and write Ruby code more clearly and use advanced features like operator overloading.
💼 Career
Many Ruby jobs require understanding how Ruby treats operators as methods to write clean, maintainable, and flexible code.
Progress0 / 4 steps
1
Create two number variables
Create two variables called num1 and num2 with values 10 and 5 respectively.
Ruby
Hint
Use = to assign values to variables.
2
Call the + method on num1
Create a variable called sum that calls the + method on num1 with num2 as argument, like this: num1.+(num2).
Ruby
Hint
Remember, + is a method and can be called with dot and parentheses.
3
Call the - method on num1
Create a variable called difference that calls the - method on num1 with num2 as argument, like this: num1.-(num2).
Ruby
Hint
Use the same method call style as for +, but with -.
4
Print the results
Print the values of sum and difference using puts.
Ruby
Hint
Use puts to show the results on the screen.
Practice
(1/5)
1. Why are operators like + and - considered methods in Ruby?
easy
A. Because operators cannot be overridden in Ruby.
B. Because Ruby does not support functions.
C. Because operators are only used for numbers in Ruby.
D. Because they are actually method calls on objects, allowing customization.
Solution
Step 1: Understand Ruby's object model
In Ruby, everything is an object, and operators like + are methods called on these objects.
Step 2: Recognize method call behavior
This means you can override these operator methods to customize behavior for your own classes.
Final Answer:
Because they are actually method calls on objects, allowing customization. -> Option D
Quick Check:
Operators = methods on objects [OK]
Hint: Remember: operators are just special method calls [OK]
Common Mistakes:
Thinking operators are separate from methods
Believing Ruby only uses operators for numbers
Assuming operators cannot be customized
2. Which of the following is the correct way to define the + operator method in a Ruby class?
easy
A. def +(other); ... end
B. def plus(other); ... end
C. def add(other); ... end
D. def operator_plus(other); ... end
Solution
Step 1: Recall operator method syntax
In Ruby, operators like + are defined by naming the method exactly as the operator symbol.
Step 2: Match method name to operator
So to define +, you write def +(other), not other names like plus or add.
Final Answer:
def +(other); ... end -> Option A
Quick Check:
Operator method name = operator symbol [OK]
Hint: Operator methods use the operator symbol as the method name [OK]
Common Mistakes:
Using descriptive names instead of operator symbols
Trying to define operators with words like 'plus'
Confusing method names with operator symbols
3. What will be the output of this Ruby code?
class Box
attr_reader :value
def initialize(value)
@value = value
end
def +(other)
Box.new(@value + other.value)
end
end
box1 = Box.new(5)
box2 = Box.new(10)
result = box1 + box2
puts result.value
medium
A. Box object
B. 15
C. 510
D. Error
Solution
Step 1: Understand the + method in Box
The + method adds the @value of two Box objects and returns a new Box with the sum.
Step 2: Calculate the sum and output
box1 has value 5, box2 has value 10, so result.value is 5 + 10 = 15, which is printed.
Final Answer:
15 -> Option B
Quick Check:
5 + 10 = 15 [OK]
Hint: Operator methods can return new objects with combined values [OK]
Common Mistakes:
Expecting string concatenation instead of addition
Printing the object instead of its value
Confusing method return with side effects
4. Identify the error in this Ruby class that tries to override the * operator:
class Multiplier
def *(other)
@value * other
end
end
m = Multiplier.new
puts m * 3
medium
A. Wrong method name for operator *
B. Operator * cannot be overridden
C. Missing initialize method to set @value
D. Cannot multiply by a number
Solution
Step 1: Check class initialization
The class does not define an initialize method, so @value is never set.
Step 2: Understand the error cause
When m * 3 runs, @value is nil, causing a NoMethodError for * on nil.
Final Answer:
Missing initialize method to set @value -> Option C
Quick Check:
Uninitialized @value causes error [OK]
Hint: Always initialize instance variables before using them [OK]
Common Mistakes:
Assuming operator * cannot be overridden
Using wrong method name for operator
Not initializing instance variables
5. You want to create a Ruby class Vector2D that supports adding two vectors using +. Which approach best uses the fact that operators are methods in Ruby?
hard
A. Define def +(other) to return a new Vector2D with summed x and y.
B. Define a separate method add_vectors(v1, v2) outside the class.
C. Use a global function to add vector components.
D. Override the + operator to print a message instead of adding.
Solution
Step 1: Use operator method inside the class
Since operators are methods, defining def +(other) inside Vector2D allows natural use of + to add vectors.
Step 2: Return a new Vector2D with summed components
The method should return a new Vector2D object with x and y added from both vectors, making code clean and intuitive.
Final Answer:
Define def +(other) to return a new Vector2D with summed x and y. -> Option A