Oh my, this one really got me, lambdas in case statements:
n = rand(1..10)
case n
when lambda { |x| x.even? }
puts "#{n} is even"
else
puts "#{n} is odd"
end
You can even use the proc-symbol shorthand
n = rand(1..10)
case n
when lambda(&:even?)
puts "#{n} is even"
else
puts "#{n} is odd"
end
You can use stabby lambdas too:
n = rand(1..10)
case n
when -> (n) { n.even? }
puts "#{n} is even"
else
puts "#{n} is odd"
end