Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@rahulrajaram
Created April 19, 2018 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rahulrajaram/07191625d36e9f3a946cf59a97b0ca60 to your computer and use it in GitHub Desktop.
Save rahulrajaram/07191625d36e9f3a946cf59a97b0ca60 to your computer and use it in GitHub Desktop.
An example with procs, blocks and lambdas in Ruby
lambda_1 = -> { puts 'From lambda_1: Hello, World!' }
lambda_2 = -> { puts 'From lambda_2: Hello, World!' }
proc_1 = Proc.new { puts 'From proc_1: Hello, World!' }
proc_2 = Proc.new { puts 'From proc_2: Hello, World!' }
def proc_or_lambda_called(
proc_or_lamdba_1,
proc_or_lamdba_2
)
proc_or_lamdba_1.call
proc_or_lamdba_2.call
yield if block_given?
end
# without block
proc_or_lambda_caller(lambda_1, lambda_2)
proc_or_lambda_caller(proc_1, proc_2)
# with block
proc_or_lambda_caller(lambda_1, lambda_2) do
puts "From the default allowable block: Hello, World!"
end
proc_or_lambda_caller(proc_1, proc_2) do
puts "From the default allowable block: Hello, World!"
end
# Output:
#
# From lambda_1: Hello, World!
# From lambda_2: Hello, World!
# From proc_1: Hello, World!
# From proc_2: Hello, World!
# From lambda_1: Hello, World!
# From lambda_2: Hello, World!
# From the default allowable block: Hello, World!
# From proc_1: Hello, World!
# From proc_2: Hello, World!
# From the default allowable block: Hello, World!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment