[#1094] Re: [ruby-cvs] ruby, ruby/lib: * eval.c (ev_const_defined, ev_const_get), variable.c — Dave Thomas <dave@...>

> * eval.c (rb_mod_autoload, rb_mod_autoload_p): new method;

12 messages 2003/05/29
[#1095] Re: [ruby-cvs] ruby, ruby/lib: * eval.c (ev_const_defined, ev_const_get), variable.c — nobu.nokada@... 2003/05/29

Hi,

Re: [ruby-cvs] ruby, ruby/lib: * eval.c (ev_const_defined, ev_const_get), variable.c

From: Dave Thomas <dave@...>
Date: 2003-05-29 13:15:14 UTC
List: ruby-core #1097
nobu.nokada@softhome.net wrote:
> Hi,
> 

>   module X
>     autoload :XXX, "xxx.rb"
>   end

>   $ ruby -v -e 'module X;autoload :XXX, "xxx.rb";end; p XXX'
>   ruby 1.8.0 (2003-05-29) [i686-linux]
>   -e:1: uninitialized constant ::XXX (NameError)
>   $ ruby -v -e 'module X;autoload :XXX, "xxx.rb";end; p X::XXX'
>   ruby 1.8.0 (2003-05-29) [i686-linux]
>   2

I have to say that this behavior is somewhat surprising. From its name, 
you'd expect 'autoload' to be an automatic form of 'load', and yet:


   x.rb:
      XXX = 1

   [~/tmp] ruby -ve 'module X; load "x.rb";end; p X::XXX'
   ruby 1.8.0 (2003-05-29) [powerpc-darwin6.6]
   1

   [~/tmp] ruby -ve 'module X; autoload :XXX, "x.rb";end; p X::XXX'
    ruby 1.8.0 (2003-05-29) [powerpc-darwin6.6]
   -e:1: uninitialized constant X::XXX (NameError)

Shouldn't they have the same semantics?


Cheers



Dave


In This Thread