Bird
Raised Fist0
Rubyprogramming~15 mins

Proc creation and call in Ruby - Mini Project: Build & Apply

Choose your learning style10 modes available
Proc creation and call
📖 Scenario: Imagine you are building a simple calculator that can perform different operations. You want to use Ruby's Proc objects to store these operations and call them when needed.
🎯 Goal: Create a Proc that adds two numbers, store it in a variable, and then call it to get the result.
📋 What You'll Learn
Create a Proc that takes two numbers and returns their sum.
Store the Proc in a variable called add_proc.
Call the add_proc with the numbers 5 and 7.
Print the result of the Proc call.
💡 Why This Matters
🌍 Real World
Procs let you store blocks of code to reuse later, like saving a recipe to cook anytime.
💼 Career
Understanding Procs helps in Ruby programming for flexible and reusable code, common in web development and automation.
Progress0 / 4 steps
1
Create a Proc that adds two numbers
Create a Proc called add_proc that takes two parameters a and b and returns their sum.
Ruby
Hint

Use Proc.new { |a, b| a + b } to create the Proc.

2
Call the Proc with two numbers
Call the add_proc with the numbers 5 and 7 and store the result in a variable called result.
Ruby
Hint

Use add_proc.call(5, 7) to call the Proc.

3
Print the result
Print the value of the variable result using puts.
Ruby
Hint

Use puts result to print the sum.

4
Use the Proc with different numbers
Call the add_proc with the numbers 10 and 15 and print the result directly using puts.
Ruby
Hint

Use puts add_proc.call(10, 15) to print the new sum.

Practice

(1/5)
1. What does a Proc in Ruby do?
easy
A. Stores a block of code to run later
B. Creates a new variable
C. Defines a class
D. Starts a loop

Solution

  1. Step 1: Understand what a Proc is and match description

    A Proc is a way to save some code to run later, like a recipe you keep for cooking. Only Stores a block of code to run later describes storing code to run later, which matches what a Proc does.
  2. Final Answer:

    Stores a block of code to run later -> Option A
  3. Quick Check:

    Proc = stored code block [OK]
Hint: Proc saves code to run later, like a saved recipe [OK]
Common Mistakes:
  • Thinking Proc creates variables
  • Confusing Proc with class definition
  • Assuming Proc starts loops automatically
2. Which of the following is the correct way to create a Proc in Ruby?
easy
A. my_proc = Proc.new { |x| x * 2 }
B. my_proc = new Proc { |x| x * 2 }
C. my_proc = Proc.create { |x| x * 2 }
D. my_proc = Proc.call { |x| x * 2 }

Solution

  1. Step 1: Recall Proc creation syntax and check options

    In Ruby, you create a Proc using Proc.new or proc with a block. Only my_proc = Proc.new { |x| x * 2 } uses the correct syntax Proc.new { |x| x * 2 }. Others use invalid methods like new Proc, Proc.create, or Proc.call.
  2. Final Answer:

    my_proc = Proc.new { |x| x * 2 } -> Option A
  3. Quick Check:

    Proc.new + block = correct Proc creation [OK]
Hint: Use Proc.new or proc with a block to create a Proc [OK]
Common Mistakes:
  • Using 'new Proc' instead of 'Proc.new'
  • Trying to call Proc.create or Proc.call to create
  • Missing the block braces {}
3. What is the output of this Ruby code?
my_proc = proc { |x| x + 3 }
puts my_proc.call(4)
medium
A. 4
B. Error
C. 3
D. 7

Solution

  1. Step 1: Trace the Proc definition and execution

    The Proc adds 3 to the input number: x + 3. Calling my_proc.call(4) computes 4 + 3 = 7.
  2. Final Answer:

    7 -> Option D
  3. Quick Check:

    4 + 3 = 7 [OK]
Hint: Proc.call runs code with given argument [OK]
Common Mistakes:
  • Confusing Proc.call with Proc.new
  • Forgetting to pass argument to call
  • Expecting output without call
4. Identify the error in this code snippet:
my_proc = Proc.new { |x| x * 2 }
puts my_proc.call
medium
A. Proc.new syntax is incorrect
B. Missing argument when calling the Proc
C. Cannot call Proc with call method
D. Block should not have parameters

Solution

  1. Step 1: Analyze Proc definition and call for errors

    The Proc expects one argument x to multiply by 2. The call is made without any argument, which causes an error because x is missing.
  2. Final Answer:

    Missing argument when calling the Proc -> Option B
  3. Quick Check:

    Proc needs argument when called [OK]
Hint: Always pass required arguments when calling a Proc [OK]
Common Mistakes:
  • Calling Proc without required arguments
  • Thinking Proc.new syntax is wrong
  • Believing call method is invalid
5. Given this code, what will be the output?
def create_proc
  Proc.new { |x| x.nil? ? 'No value' : x * 10 }
end

my_proc = create_proc
puts my_proc.call(nil)
puts my_proc.call(5)
hard
A. nil\n50
B. Error\n50
C. No value\n50
D. No value\n5

Solution

  1. Step 1: Analyze the Proc logic and trace both calls

    The Proc checks if x is nil; if yes, returns 'No value', else returns x * 10. Calling with nil returns 'No value'. Calling with 5 returns 5 * 10 = 50.
  2. Final Answer:

    No value\n50 -> Option C
  3. Quick Check:

    nil -> 'No value', 5 -> 50 [OK]
Hint: Proc can handle nil with conditional inside block [OK]
Common Mistakes:
  • Expecting error when passing nil
  • Forgetting ternary condition inside Proc
  • Assuming multiplication by 10 applies to nil
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