Reflecting on objects without creating one

Let’s say I have two constants

a = Integer
b = Numeric

Does anyone have any idea how to see if ‘a’ is a subclass of ‘b’
WITHOUT creating an object of class ‘a’?

_Kevin

(Class).superclass should do it.

Example:
if a.superclass == b
puts “Yes.”
else
puts “No.”
end

–Jeremy

On Dec 20, 2006, at 3:40 PM, _Kevin wrote:

Let’s say I have two constants

a = Integer
b = Numeric

Does anyone have any idea how to see if ‘a’ is a subclass of ‘b’
WITHOUT creating an object of class ‘a’?

A = Integer
=> Integer

B = Numeric
=> Numeric

A.ancestors.include? B
=> true

Hope that helps.

James Edward G. II

On 12/20/06, _Kevin [email protected] wrote:

Let’s say I have two constants

a = Integer
b = Numeric

Does anyone have any idea how to see if ‘a’ is a subclass of ‘b’
WITHOUT creating an object of class ‘a’?

irb(main):021:0> a = Numeric
=> Numeric
irb(main):022:0> b = Integer
=> Integer
irb(main):023:0> a.ancestors
=> [Numeric, Comparable, Object, Kernel]
irb(main):024:0> a.ancestors.include? b
=> false
irb(main):025:0> b.ancestors.include? a
=> true
irb(main):026:0>

“b.ancestors.include? a” seems to do it. Notice I reversed your
definitions
of “a” & “b” (not for any particular reason, that’s just how it worked
out).

Justin

Thanks guys,

_Kevin

On Dec 20, 2006, at 1:53 PM, Justin B. wrote:

irb(main):026:0>

“b.ancestors.include? a” seems to do it. Notice I reversed your
definitions
of “a” & “b” (not for any particular reason, that’s just how it
worked out).

Justin

You can also use < and > to compare subclasses or superclasses

ez $ irb

a = Integer

=> Integer

b = Numeric

=> Numeric

a < b

=> true

a > b

=> false

Cheers-

– Ezra Z.
– Lead Rails Evangelist
[email protected]
– Engine Y., Serious Rails Hosting
– (866) 518-YARD (9273)