Hi --

On Thu, 20 Feb 2003, Yukihiro Matsumoto wrote:

> I can remain "don't care" for referencing, but not for creation.
> That's the reason.  If "module C::D" form requires C to be defined
> previously, we don't care whether it's a class or module, but I
> thought it suppose to define C if it doesn't exist.

That's the autovivification we were talking about earlier in the
thread.  I think the consensus is against it.  I certainly think it
would be very bad.

> |My feeling is that module A::B should be even *less* smart than you're
> |saying :-) To me, "module A::B::C::D" should mean: "Create (or reopen)
> |a module called D, with a path through A, B, and C".  An error should
> |only happen if that path is impossible (e.g., if B is an integer
> |instead of a class or module).
>
> So you require A, B and C to be either class or module predefined.

Yes.

> That's reasonable.  But I feel like it's less useful, but without any
> concrete rationale.  Let us discuss.

I guess the rationale would mainly be consistency with the reference
notation:

  module A
    module B
      Thing = 1
    end
  end

  puts A::B::Thing

  A::B::OtherThing = 2      # create OtherThing, using shorthand path

  module A::B::SomeModule   # likewise with a new module
    # ...
  end

and to save some space.  I don't think it's urgently needed (original
poster? are you still here? :-) and if the subclassing syntax/scoping
problems mentioned earlier are too much, it's probably not a good
idea.


David

-- 
David Alan Black
home: dblack / candle.superlink.net
work: blackdav / shu.edu
Web:  http://pirate.shu.edu/~blackdav