Skip to content

Instantly share code, notes, and snippets.

@dkubb
Forked from flazz/gist:838163
Created August 7, 2011 05:21
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save dkubb/1130086 to your computer and use it in GitHub Desktop.
Save dkubb/1130086 to your computer and use it in GitHub Desktop.
case with predicates
require 'rubygems'
require 'backports' # aliases Proc#=== to Proc#call
rs = (0..10000).to_a.sample(30)
rs.each do |r|
case r
when lambda { |n| n.zero? } then puts "#{r} is zero"
when lambda { |n| (n % 5).zero? } then puts "#{r} is fiven"
when lambda { |n| (n % 4).zero? } then puts "#{r} is fourven"
when lambda { |n| (n % 3).zero? } then puts "#{r} is threeven"
when lambda { |n| n.even? } then puts "#{r} is even"
when lambda { |n| n.odd? } then puts "#{r} is odd"
else
raise 'unpossible'
end
end
@ernie
Copy link

ernie commented Aug 8, 2011

I'd still very much like to have &:method work in when arg lists. I spent some time trying to hack parse.y over the weekend, actually, to see if I could make it work in some frankenstein-like manner, but my version of bison seemed not to be playing nicely. :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment