Ruby Interview | Ruby on Rails
468 subscribers
14 photos
2 links
The Ruby Interview channel is a resource for preparing for Ruby developer interviews.

It features questions, problem-solving solutions, and interview tips.
Download Telegram
🔍 Understanding Ruby Blocks, Procs, and Lambdas

One of Ruby’s most elegant — yet initially confusing — features is its support for blocks, Procs, and lambdas. Mastering these is key to writing idiomatic and powerful Ruby code.

🧱 What is a Block?
A block is an anonymous piece of code that can be passed to a method.

def greet
yield
end

greet { puts "Hello from the block!" }
# => Hello from the block!


If you call yield without a block, Ruby raises an error — unless you check with block_given?.

🎁 What is a Proc?
A Proc is a block saved into a variable.

say_hello = Proc.new { puts "Hello!" }
say_hello.call
# => Hello!

You can pass Procs to methods, return them, and store them — like any object.

🧠 What is a Lambda?
A lambda is a special kind of Proc with stricter argument checking and different return behavior.

greet = lambda { |name| puts "Hello, #{name}!" }
greet.call("Rubyist")
# => Hello, Rubyist!


Key differences:
- lambda enforces argument count (unlike Proc)
- return in a lambda exits only the lambda; in a Proc, it exits the method it's called from

🆚 Proc vs Lambda: Subtle but Important

def test
proc = Proc.new { return "From Proc" }
proc.call
return "After Proc"
end

puts test
# => "From Proc" (method exited early)

def test_lambda
l = -> { return "From Lambda" }
l.call
return "After Lambda"
end

puts test_lambda
# => "After Lambda" (lambda returned only from itself)


When to Use What?
- Use blocks for simple callbacks or iteration (e.g., each, map)
- Use Procs when you need to store logic to reuse
- Use lambdas when return behavior and argument count matter

🔹 Learning to use blocks, Procs, and lambdas fluently is a big step toward writing expressive Ruby code.

#rubyonrails #codingtips
1🔥16👍2