Procs and Lambdas in Ruby

Procs and lambdas are tools in Ruby that allow you to encapsulate blocks of code to be used as objects. Although they are similar, they have some important differences.


  • They are created using or the ampersand (&) before the variable name.
  • They can be passed as arguments to other methods.
  • They can be stored in variables or constants.
  • They can be executed as blocks or as methods.

Example: Link to heading

greet = { |nombre| puts "hello #{name}" }"john") # => "hello john"

def greet_with_proc(proc, name)

greet_with_proc(greet, "ana") # => "hello ana"

Lambdas: Link to heading

  • They are created using lambda or the arrow (->).
  • They behave like anonymous methods.
  • They can be passed as arguments to other methods.
  • They can be stored in variables or constants.

Example: Link to heading

greet = lambda { |name| puts "hello #{name}" }"ana") # => "hello ana"

def greet_with_lambda(lambda, name)

greet_with_lambda(greet, "john") # => "hello john"

Differences: Link to heading

  • Return: A return within a proc only exits the block, while in a lambda it exits the method that contains it.
  • Arguments: The arguments in lambdas are mandatory and must be passed in order, while in procs they are optional.
  • Efficiency: procs are generally slower than lambdas.

In summary: Link to heading

  • Procs: More flexible, can be used as blocks or methods.
  • Lambdas: More efficient, they behave like anonymous methods.

Choice: Link to heading

The choice between a proc and a lambda depends on the specific needs of the program.

Keep learning about procs and lambdas to take full advantage of their benefits in your programs!

Additional Tips: Link to heading

  • You can use procs to create closures.
  • You can use lambdas to create anonymous functions.
  • You can use procs and lambdas to avoid code duplication.

Keep experimenting with procs and lambdas to create more elegant and efficient programs!

Here are some additional examples of how procs and lambdas can be used: Link to heading

  • Filter data
  • Sort data
  • Group data
  • Calculate values
  • Validate input
  • Format text

The possibilities are endless!

<< Regular Expressions in Ruby Object Oriented Programming (OOP) in Ruby >>