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.