On Aug 26, 2010, at 2:15 PM, Collins wrote:

> I have a class hierachy that looks like this
> 
> class A
> ...
> end
> 
> class B < A
> ...
> end
> 
> class C < A
> ...
> end
> 
> class D < B
> ...
> end
> 
> class E < C
> ...
> end
> 
> class F < B
> ...
> end
> 
> Now class B has a method that expects either members of class D or E
> or Fas a parameter but needs to do something different based upon the
> whether the parameter is a subclass of B or a subclass of C.
> I could check to see if it was D or F as opposed to B but that would
> mean when I added class G<B...end I'd have to go back and touch B.
> Is there a way to ask an object if it is descended from a particular
> class?  I suppose I could add a method to B and test for the presence
> of that method in the parameter objects but that feels ucky.
> 
>  Thanks
> 
>    Collins

You could try kind_of? e.g.

 >> o = F.new
 => #<F:0x00000100a74a30>
 >> o.kind_of?(A)
 => true
 >> o.kind_of?(B)
 => true
 >> o.kind_of?(C)
 => false

etc.

Hope this helps,

Mike

-- 

Mike Stok <mike / stok.ca>
http://www.stok.ca/~mike/

The "`Stok' disclaimers" apply.