2. Which of the following is the correct syntax to define a method with keyword arguments in Ruby?
easy
A. def greet(name =>, age =>); puts "Hello #{name}, you are #{age}"; end
B. def greet(name, age); puts "Hello #{name}, you are #{age}"; end
C. def greet(name:, age:); puts "Hello #{name}, you are #{age}"; end
D. def greet(name =:, age =:); puts "Hello #{name}, you are #{age}"; end
Solution
Step 1: Review Ruby keyword argument syntax
Keyword arguments are defined with a colon after the argument name, like name:.
Step 2: Check each option
def greet(name:, age:); puts "Hello #{name}, you are #{age}"; end uses correct syntax with name: and age:. Others use invalid symbols or positional arguments.
Final Answer:
def greet(name:, age:); puts "Hello #{name}, you are #{age}"; end -> Option C
Quick Check:
Keyword args use colon after name [OK]
Hint: Keyword args end with colon in method definition [OK]
Common Mistakes:
Using => instead of : for keyword arguments
Defining keyword arguments without colons
Confusing positional and keyword argument syntax
3. What will be the output of the following Ruby code?
The method info has a required keyword argument name: and an optional keyword argument age: with default 30.
Step 2: Check method call
The call passes name: "Alice" but no age, so default 30 is used.
Final Answer:
Name: Alice, Age: 30 -> Option A
Quick Check:
Default keyword argument used when missing [OK]
Hint: Missing keyword uses default if provided [OK]
Common Mistakes:
Expecting error when optional keyword is missing
Confusing positional defaults with keyword defaults
Ignoring default values in keyword arguments
4. Identify the error in the following Ruby method call:
def order(item:, quantity:)
"Order: #{quantity} x #{item}"
end
puts order(quantity: 3, "apple")
medium
A. ArgumentError: missing keyword: item
B. SyntaxError due to positional argument after keyword argument
C. No error, prints 'Order: 3 x apple'
D. TypeError: wrong argument type String (expected Symbol)
Solution
Step 1: Examine method call arguments
The call uses quantity: 3 (keyword) then "apple" (positional).
Step 2: Understand Ruby argument rules
In Ruby, positional arguments cannot come after keyword arguments in a call; this causes a syntax error.
Final Answer:
SyntaxError due to positional argument after keyword argument -> Option B
Quick Check:
Positional args must come before keyword args [OK]
Hint: Positional args cannot follow keyword args in calls [OK]
Common Mistakes:
Passing positional argument after keyword argument
Assuming Ruby allows mixed order without error
Confusing missing keyword with syntax error
5. Given this method: <pre>def build_profile(name:, age:, city: "Unknown", **extras)
profile = {name: name, age: age, city: city}
profile.merge!(extras)
profile
end
What will be the result of build_profile(name: "Bob", age: 25, hobby: "guitar", pet: "dog")?
hard
A. {:name=>"Bob", :age=>25, :city=>"Unknown", :hobby=>"guitar", :pet=>"dog"}
B. {:name=>"Bob", :age=>25, :city=>"Unknown"}
C. ArgumentError: unknown keyword: hobby
D. {:name=>"Bob", :age=>25, :city=>"Unknown", :extras=>{:hobby=>"guitar", :pet=>"dog"}}
Solution
Step 1: Understand method parameters
The method requires name and age, has optional city with default, and collects extra keyword arguments into extras.
Step 2: Analyze method call
The call passes name, age, and extra keywords hobby and pet. These extras are merged into the profile hash.
Step 3: Determine final hash
The returned hash includes all keys: name, age, default city, plus hobby and pet from extras.
Final Answer:
{:name=>"Bob", :age=>25, :city=>"Unknown", :hobby=>"guitar", :pet=>"dog"} -> Option A
Quick Check:
Extras merged into hash with defaults [OK]
Hint: Use **extras to capture and merge extra keyword args [OK]
Common Mistakes:
Expecting error on unknown keywords with **extras
Forgetting to merge extras into profile
Assuming extras stored under :extras key
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.