From: dblack@... Date: 2007-08-08T23:50:29+09:00 Subject: Re: case statement Hi -- On Wed, 8 Aug 2007, Jano Svitok wrote: > On 8/8/07, Shai Rosenfeld wrote: >> Alex Young wrote: >>> Shai Rosenfeld wrote: >>>> end >>>> >>>> ((i.e, whatever value is included in the array)) >>>> ...how do i do this? >>> >>> Does the Array#include? method do what you need? Perhaps a more >>> fleshed-out example might help? >> >> Array#include is EXACTLY what i need, but syntaxtetically (if u get the >> drift) i'm not sure how to do it: >> >> case [3, 45, 6, 'abc'].inlcude? >> when 1: 'no good' >> when 3: 'good!' >> when 'lolo': 'no good' >> end >> >> (the above doesn't work. it's gives a 'not enough arguments' error. how >> do i do it correctly?) > > You could possibly do something like the following, but it's pretty dangerous: > > class Object > alias_method :old_case_equal, :=== > > def ===(other) > case other > when Array: > other.include? self > else > old_case_equal(other) > end > end > end Let's go back to the "pretty dangerous" thing :-) I think this is beyond the acceptable danger threshold; you're actually making it so that Array#=== won't work any more, which could really make things blow up. David -- * Books: RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242) RUBY FOR RAILS (http://www.manning.com/black) * Ruby/Rails training & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)