callables/proc_case_compare_no_parens.rb
tests/_examples/callables/proc_case_compare_no_parens.rb in the metorex repository.
# Proc#=== calls the proc with the given argument, so a callable can stand in
# for a pattern in a case/when.
positive = proc { |number| number > 0 }
p positive === 5
p positive === -5
pair = proc { |first, second| [first, second] }
p pair === [1, 2]
strict = lambda { |first, second| [first, second] }
p strict.=== 1, 2
begin
strict.=== 1
rescue ArgumentError => trouble
p trouble.message
end
def describe value
even = proc { |number| number.even? }
small = lambda { |number| number < 10 }
case value
when even then "even"
when small then "small and odd"
else "large and odd"
end
end
p describe 4
p describe 7
p describe 11
Output:
true
false
[1, 2]
[1, 2]
"wrong number of arguments (given 1, expected 2)"
"even"
"small and odd"
"large and odd"