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