Bird
Raised Fist0
Rubyprogramming~5 mins

Proc creation and call in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Proc in Ruby?
A Proc is an object that holds a block of code which can be stored in a variable and called later.
Click to reveal answer
beginner
How do you create a Proc in Ruby?
You create a Proc by using Proc.new { ... } or the shorthand proc { ... }.
Click to reveal answer
beginner
How do you call a Proc once it is created?
You call a Proc using proc_object.call(arguments).
Click to reveal answer
intermediate
What happens if you call a Proc with the wrong number of arguments?
A Proc is flexible and does not raise an error if called with fewer or more arguments than expected. Missing arguments become nil.
Click to reveal answer
intermediate
Difference between Proc and lambda in Ruby?
A Proc is more lenient with arguments and returns from the calling method, while a lambda checks arguments strictly and returns from itself.
Click to reveal answer
How do you create a Proc object in Ruby?
Aproc = function() { puts 'Hello' }
Bdef proc { puts 'Hello' }
Ccreate Proc { puts 'Hello' }
DProc.new { puts 'Hello' }
How do you execute the code inside a Proc named 'p'?
Ap.call()
Bexecute p()
Ccall p()
Dp.run()
What happens if you call a Proc with fewer arguments than it expects?
AMissing arguments become nil
BIt raises an error
CIt ignores extra arguments
DIt converts arguments to strings
Which of these is true about Procs compared to lambdas?
AProcs check argument count strictly
BProcs return from the calling method
CProcs cannot be stored in variables
DProcs are not objects
Which syntax creates a Proc using shorthand in Ruby?
Alambda { puts 'Hi' }
BProc.new do puts 'Hi' end
Cproc { puts 'Hi' }
Ddef proc; puts 'Hi'; end
Explain how to create and call a Proc in Ruby with an example.
Think about how you store a block of code and run it later.
You got /3 concepts.
    Describe the difference between a Proc and a lambda in Ruby.
    Focus on how they treat arguments and return statements.
    You got /3 concepts.

      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