logo       

Re: class === class often false?: msg#01170

lang.ruby.general

Subject: Re: class === class often false?

----- Original Message -----
From: <dblack@xxxxxxxxxxxxxxxxxxxx>
To: "ruby-talk ML" <ruby-talk@xxxxxxxxxxxxx>
Sent: Monday, August 12, 2002 8:17 PM
Subject: Re: class === class often false?


> It's actually y.is_a? x

Oh, yes.

> which I think is to help with case statement syntax:

Yes.

> > Note also that if a class includes a module, it
> > then has the "is a" relationship with that module,
> > and an included module shows up in the list of
> > ancestors. (Since a module is a kind of parent --
> > it's like a limited form of inheritance.)
>
> It is among the ancestors, but there's no is_a? or === relationship:

(snip where you prove this)

Hmm, brain fade on my part. Happens daily.

> However, Array objects do return true on these tests:
>
> irb(main):026:0> [].is_a? Enumerable
> true
> irb(main):027:0> Enumerable === []
> true

That must be what I was thinking.

> A (whimsical) further test:
>
> irb(main):036:0> class Class; include Enumerable; end
> Class
> irb(main):037:0> Enumerable === Array
> true
>
> So ancestors/is_a?/Module#=== are related but can vary independently.

Yes, this is where my brain itches again.

> Now, this one:
>
> irb(main):015:0> Kernel === Object
> true
>
> is a little puzzling to me, because I would have thought Object:Kernel
> was the same relationship as Array:Enumerable. Except... there is
> that circularity/singularity at the top of the chain -- which I
> alternate between thinking I understand and losing sleep over :-) In
> this case I can't say I entirely understand exactly how/why it would
> account for the result, but I think somehow it does.

Probably true.

I'll think about this more later.

Hal





<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise