📖 Scenario: You are building a simple calculator program that can perform basic math operations. To keep the code organized, you will use a Ruby module to group the math methods.
🎯 Goal: Create a Ruby module named Calculator with methods for addition and subtraction. Then call these methods to perform calculations.
📋 What You'll Learn
Create a module named Calculator
Inside the module, define a method add that takes two numbers and returns their sum
Inside the module, define a method subtract that takes two numbers and returns their difference
Call the add and subtract methods from the Calculator module and print the results
💡 Why This Matters
🌍 Real World
Modules help organize related methods in Ruby programs, making code easier to maintain and reuse.
💼 Career
Understanding modules is important for Ruby developers to write clean, modular, and reusable code in real projects.
Progress0 / 4 steps
1
Create the Calculator module
Create a Ruby module called Calculator.
Ruby
Hint
Use the keyword module followed by the module name and end to define a module.
2
Add methods to the Calculator module
Inside the Calculator module, define a method called add that takes two parameters a and b and returns their sum. Also define a method called subtract that takes two parameters a and b and returns their difference.
Ruby
Hint
Use def self.method_name to define module methods that can be called on the module itself.
3
Call the module methods
Call the add method from the Calculator module with arguments 10 and 5 and store the result in a variable called sum. Call the subtract method with arguments 10 and 5 and store the result in a variable called difference.
Ruby
Hint
Call module methods using the module name followed by a dot and the method name.
4
Print the results
Print the values of sum and difference variables using two separate puts statements.
Ruby
Hint
Use puts to print each variable on its own line.
Practice
(1/5)
1. What is the correct way to define a method inside a Ruby module so it can be called directly on the module?
easy
A. Define the method outside the module
B. Define the method without self inside the module
C. Define the method with self.method_name inside the module
D. Define the method with def module.method_name inside the module
Solution
Step 1: Understand module method definition
In Ruby, to make a method callable directly on a module, you define it with self.method_name inside the module.
Step 2: Compare options
Define the method with self.method_name inside the module uses self.method_name, which is correct. Other options either omit self or use invalid syntax.
Final Answer:
Define the method with self.method_name inside the module -> Option C
Quick Check:
Module methods use self.method_name = A [OK]
Hint: Use self.method_name to define module methods [OK]
Common Mistakes:
Forgetting to add self before method name
Defining methods outside the module
Using invalid syntax like def module.method_name
2. Which of the following is the correct syntax to call a module method named greet defined in module Welcome?
easy
A. Welcome#greet
B. greet.Welcome
C. Welcome.new.greet
D. Welcome.greet
Solution
Step 1: Recall how to call module methods
Module methods are called using dot notation: ModuleName.method_name.
Step 2: Check options
Welcome.greet is the correct syntax using dot notation. Welcome#greet incorrectly uses #. greet.Welcome reverses the order. Welcome.new.greet confuses it with an instance method call.
Final Answer:
Welcome.greet -> Option D
Quick Check:
Call module methods with dot = D [OK]
Hint: Call module methods with ModuleName.method_name [OK]
Common Mistakes:
Using # instead of . to call module methods
Trying to call method with invalid syntax
Confusing instance and module method calls
3. What will be the output of the following Ruby code?
module MathTools
def self.square(x)
x * x
end
end
puts MathTools.square(4)
medium
A. 16
B. square
C. Error: undefined method
D. 4
Solution
Step 1: Understand the method definition
The method square is defined as a module method using self.square. It returns the square of the input.
Step 2: Calculate the output
Calling MathTools.square(4) returns 4 * 4 = 16, which is printed.
Final Answer:
16 -> Option A
Quick Check:
4 squared = 16 [OK]
Hint: Multiply input by itself in module method [OK]
Common Mistakes:
Forgetting self and causing undefined method error
Confusing output with input
Expecting method name as output
4. Identify the error in this Ruby module method code:
module Greetings
def greet
"Hello!"
end
end
puts Greetings.greet
medium
A. Method greet is not defined as a module method
B. Module name is incorrect
C. Missing parentheses in method call
D. Syntax error in method body
Solution
Step 1: Check method definition inside module
The method greet is defined without self., so it is an instance method, not a module method.
Step 2: Understand method call
Calling Greetings.greet tries to call a module method, but none exists, causing an error.
Final Answer:
Method greet is not defined as a module method -> Option A
Quick Check:
Missing self. means no module method [OK]
Hint: Add self. to define module methods [OK]
Common Mistakes:
Defining instance methods instead of module methods
Calling module method without defining it
Assuming parentheses are required in method call
5. Given the module below, how can you add a module method double that returns twice the input number?
module Calculator
# Add your method here
end
hard
A. def double(x)
x + x
end
B. def self.double(x)
x * 2
end
C. def Calculator.double(x)
x * 2
end
D. def self.double
x * 2
end
Solution
Step 1: Define a module method with self
To create a module method, define it with self.method_name inside the module.
Step 2: Write method to return twice the input
The method should take one argument x and return x * 2.
Final Answer:
def self.double(x)
x * 2
end -> Option B
Quick Check:
Module method with self and correct logic = A [OK]
Hint: Use def self.method(args) for module methods [OK]
Common Mistakes:
Omitting self and creating instance method
Missing method argument
Defining method outside module
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.