PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.ruby > Where's A?
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Where's A?

Réponse
 
LinkBack Outils de la discussion
Vieux 20/11/2007, 13h53   #1
Trans
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Where's A?

This doesn't seem right to me:

irb(main):001:0> module X
irb(main):002:1> module A; end
irb(main):003:1> end
=> nil
irb(main):004:0> class Q
irb(main):005:1> include X
irb(main):006:1> p A
irb(main):007:1> class Y
irb(main):008:2> class Z < A
irb(main):009:3> end
irb(main):010:2> end
irb(main):011:1> end
X::A
NameError: uninitialized constant Q::Y::A
from (irb):8

If I recall correctly, 1.9 has some changes to constant lookup rules.
Is the above fixed in 1.9?

Thanks,
T.

  Réponse avec citation
Vieux 20/11/2007, 22h17   #2
Sean O'Halpin
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Where's A?

On Nov 20, 2007 1:53 PM, Trans <transfire@gmail.com> wrote:
> This doesn't seem right to me:
>
> irb(main):001:0> module X
> irb(main):002:1> module A; end
> irb(main):003:1> end
> => nil
> irb(main):004:0> class Q
> irb(main):005:1> include X
> irb(main):006:1> p A
> irb(main):007:1> class Y
> irb(main):008:2> class Z < A
> irb(main):009:3> end
> irb(main):010:2> end
> irb(main):011:1> end
> X::A
> NameError: uninitialized constant Q::Y::A
> from (irb):8
>
> If I recall correctly, 1.9 has some changes to constant lookup rules.
> Is the above fixed in 1.9?
>
> Thanks,
> T.
>

Hi Trans,

I'm not sure I understand what you expect. In the following example:

class A
end

module Outer
module X
class A # you meant 'class' didn't you?
end
end

class A
end

class Q
include X
class Y
p A
class Z < A # which A do you want?
end
# this seems reasonable to me...
class XZ < X::A
end
end
end
end

which A should Z be a subclass of?

Regards,
Sean

  Réponse avec citation
Vieux 21/11/2007, 02h34   #3
Trans
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Where's A?



On Nov 20, 5:17 pm, "Sean O'Halpin" <sean.ohal...@gmail.com> wrote:
> On Nov 20, 2007 1:53 PM, Trans <transf...@gmail.com> wrote:
>
> > This doesn't seem right to me:

>
> > irb(main):001:0> module X
> > irb(main):002:1> module A; end
> > irb(main):003:1> end
> > => nil
> > irb(main):004:0> class Q
> > irb(main):005:1> include X
> > irb(main):006:1> p A
> > irb(main):007:1> class Y
> > irb(main):008:2> class Z < A
> > irb(main):009:3> end
> > irb(main):010:2> end
> > irb(main):011:1> end
> > X::A
> > NameError: uninitialized constant Q::Y::A
> > from (irb):8

>
> > If I recall correctly, 1.9 has some changes to constant lookup rules.
> > Is the above fixed in 1.9?

>
> > Thanks,
> > T.

>
> Hi Trans,
>
> I'm not sure I understand what you expect. In the following example:
>
> class A
> end
>
> module Outer
> module X
> class A # you meant 'class' didn't you?


Oops. Yes.

> end
> end
>
> class A
> end
>
> class Q
> include X
> class Y
> p A
> class Z < A # which A do you want?
> end
> # this seems reasonable to me...
> class XZ < X::A
> end
> end
> end
> end
>
> which A should Z be a subclass of?


Fair question. I would expect the closest, and in this case it would
be the one defined in X, since that's what is asked for in the
namespace with "include X". The problem with the way it is now is very
much like the problem with XML namespaces. That X::, which seems so
reasonable here turns into Some:eep::Space:: in real life. And if
we're defining a number of such subclasses (as I am) we have to repeat
it over and over. No fun.

However, I did find a trick.

module X
class A
include X
end
end

This s once I get past the first subclass (all subsequent
subclasses can see all of X). Weird, huh?

T.

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 11h29.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,17189 seconds with 11 queries