"obj.is_one_of? {Class1, Class2, ...}" as similar to "obj.is_a?(Class1) or obj.is_a?(Class2)"

I need to check if a given object is an instance of a range of Classes, and I was wondering if I could do it by passing in is_a? an hash of classes, instead of calling is_a? for each class I have to compare... As I state in the subject (obj.is_one_of? {Class1, Class2, ...}), this could justify a method "obj.is_one_of?" which returns true if the object "obj" is an instance of Class1 or Class2... Is there something that I'm missing?

I need to check if a given object is an instance of a range of Classes,

Are you sure? It would be more idiomatic to check for duck-typing:   obj.respond_to? :my_method or to just call it and deal with the consequences:   begin     obj.my_method   rescue NoMethodError     # deal with it   end

You already have something similar with:   case obj   when Class1, Class2     # Yippee!   else     # Drat!   end

and I was wondering if I could do it by passing in is_a? an hash of classes, instead of calling is_a? for each class I have to compare... As I state in the subject (obj.is_one_of? {Class1, Class2, ...}), this could justify a method "obj.is_one_of?" which returns true if the object "obj" is an instance of Class1 or Class2... Is there something that I'm missing?

What are you trying to do that causes you to want this?

-Rob

Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com

Thanks so much for the quick and useful reply... The suggestion to use "case obj when Class1, Class2" completely fulfills my needs, most appreciated :smiley: