Bird
Raised Fist0
Rubyprogramming~10 mins

Method objects with method() in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to get a method object from the string 'hello'.

Ruby
str = 'hello'
method_obj = str.[1](:upcase)
Drag options to blanks, or click blank then click option'
Amethod
Bsend
Ccall
Ddefine_method
Attempts:
3 left
💡 Hint
Common Mistakes
Using send instead of method returns the result, not a method object.
Using call directly on the string is invalid.
2fill in blank
medium

Complete the code to call the method object and get the uppercase string.

Ruby
str = 'hello'
method_obj = str.method(:upcase)
result = method_obj.[1]()
Drag options to blanks, or click blank then click option'
Aapply
Bsend
Ccall
Dinvoke
Attempts:
3 left
💡 Hint
Common Mistakes
Using send on a method object is invalid.
Using apply or invoke are not Ruby methods.
3fill in blank
hard

Fix the error in the code to correctly get the length method object from an array.

Ruby
arr = [1, 2, 3]
length_method = arr.[1](:length)
Drag options to blanks, or click blank then click option'
Acall
Bmethod
Csend
Ddefine_method
Attempts:
3 left
💡 Hint
Common Mistakes
Using send calls the method instead of returning the method object.
Using call on the array is invalid.
4fill in blank
hard

Fill both blanks to create a method object for 'reverse' and call it.

Ruby
text = 'world'
reverse_method = text.[1](:reverse)
result = reverse_method.[2]()
Drag options to blanks, or click blank then click option'
Amethod
Bsend
Ccall
Ddefine_method
Attempts:
3 left
💡 Hint
Common Mistakes
Using send instead of method returns the result immediately.
Using send or define_method to call the method object is invalid.
5fill in blank
hard

Fill all three blanks to get the 'capitalize' method object from a string, call it, and store the result.

Ruby
word = 'ruby'
capitalize_method = word.[1](:capitalize)
result = capitalize_method.[2]()
puts [3]
Drag options to blanks, or click blank then click option'
Amethod
Bcall
Cresult
Dsend
Attempts:
3 left
💡 Hint
Common Mistakes
Using send instead of method to get the method object.
Printing the method object instead of the result.

Practice

(1/5)
1. What does the Ruby expression obj.method(:foo) return?
easy
A. A Method object representing the method foo of obj
B. The result of calling foo on obj
C. A symbol :foo
D. An error because method is not a valid method

Solution

  1. Step 1: Understand method usage

    The method method on an object returns a Method object representing the named method.
  2. Step 2: Identify the return type

    Calling obj.method(:foo) returns a Method object, not the method's result or a symbol.
  3. Final Answer:

    A Method object representing the method foo of obj -> Option A
  4. Quick Check:

    obj.method(:foo) returns Method object [OK]
Hint: Remember: method returns a Method object, not the call result [OK]
Common Mistakes:
  • Thinking it calls the method immediately
  • Confusing with symbol :foo
  • Assuming it returns a string or error
2. Which of the following is the correct syntax to get a Method object for the method greet on object person?
easy
A. person.send(:greet)
B. person.method[b greet]
C. person.method(greet)
D. person.method(:greet)

Solution

  1. Step 1: Check argument type for method

    The method method expects a symbol representing the method name.
  2. Step 2: Validate options

    person.method(:greet) uses a symbol :greet, which is correct. person.send(:greet) calls the method directly, returning its result instead of a Method object. person.method(greet) passes an undefined variable greet, causing error. person.method[b greet] uses brackets, which is invalid syntax.
  3. Final Answer:

    person.method(:greet) -> Option D
  4. Quick Check:

    Use symbol argument with method [OK]
Hint: Use a symbol like :greet inside method() [OK]
Common Mistakes:
  • Confusing method() with send()
  • Using brackets instead of parentheses
  • Passing undefined variable instead of symbol
3. What is the output of the following Ruby code?
class Calculator
  def add(x, y)
    x + y
  end
end
calc = Calculator.new
adder = calc.method(:add)
puts adder.call(5, 7)
medium
A. 5 7
B. 12
C. add
D. NoMethodError

Solution

  1. Step 1: Understand method object creation

    The method(:add) returns a Method object for add on calc.
  2. Step 2: Calling the Method object

    Calling adder.call(5, 7) executes add(5, 7), which returns 12.
  3. Final Answer:

    12 -> Option B
  4. Quick Check:

    Method object call returns sum 12 [OK]
Hint: Use call on Method object to run method with arguments [OK]
Common Mistakes:
  • Expecting method name or arguments printed
  • Confusing output with error
  • Not using call to invoke method
4. Identify the error in this Ruby code snippet:
class Person
  def name
    "Alice"
  end
end
p = Person.new
m = p.method(name)
m.call
medium
A. Missing quotes around method name in method(name)
B. Cannot call method on an object
C. Method name does not exist
D. Using call on Method object is invalid

Solution

  1. Step 1: Check argument to method

    The argument name is used as a variable, but it should be a symbol or string representing the method name.
  2. Step 2: Correct usage

    It should be p.method(:name) or p.method('name') to get the Method object.
  3. Final Answer:

    Missing quotes around method name in method(name) -> Option A
  4. Quick Check:

    Method name must be symbol or string [OK]
Hint: Always pass method name as symbol or string to method() [OK]
Common Mistakes:
  • Passing bare method name without quotes or colon
  • Thinking method is invalid on objects
  • Confusing call usage
5. Given the following code, what will be the output?
class Greeter
  def initialize(name)
    @name = name
  end
  def greet
    "Hello, #{@name}!"
  end
end

g1 = Greeter.new("Bob")
g2 = Greeter.new("Sue")
m1 = g1.method(:greet)
m2 = g2.method(:greet)

puts m1.call
puts m2.call
hard
A. Hello, Sue!\nHello, Sue!
B. Hello, Bob!\nHello, Bob!
C. Hello, Bob!\nHello, Sue!
D. Error: undefined method greet

Solution

  1. Step 1: Understand instance variables and method objects

    Each Greeter instance stores its own @name. The method(:greet) returns a Method object bound to that instance.
  2. Step 2: Calling Method objects

    Calling m1.call runs greet on g1, printing "Hello, Bob!". Similarly, m2.call prints "Hello, Sue!".
  3. Final Answer:

    Hello, Bob! Hello, Sue! -> Option C
  4. Quick Check:

    Method objects keep instance context [OK]
Hint: Method objects remember their object, so output matches instance data [OK]
Common Mistakes:
  • Assuming method objects lose instance context
  • Expecting same output for both calls
  • Confusing method object with class method
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