[#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: nobu.nokada@...
Date: 2003-05-29 05:48:09 UTC
List: ruby-core #1095
Hi,

At Thu, 29 May 2003 12:16:52 +0900,
Dave Thomas wrote:
> >     * eval.c (rb_mod_autoload, rb_mod_autoload_p): new method;
> >       Module#autoload, Module#autoload?.
> 
> This is probably a silly question, but does autoload ever get used? Or
> is it possibly a Perlism that we might think about deprecating?

Kernel is a Module, so still you can call autoload everywhere.

  $ cat xxx.rb
  XXX=1
  $ ruby -e 'autoload :XXX, "xxx.rb"; p XXX'
  ruby 1.8.0 (2003-05-29) [i686-linux]
  1

But one incompatibility.

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

In this case, X::XXX would be autoloaded now, wheareas ::XXX in
1.6.

  $ cat xxx.rb
  XXX=1
  module X
    XXX=2
  end
  $ ruby-1.6 -v -e 'module X;autoload :XXX, "xxx.rb";end; p XXX'
  ruby 1.6.8 (2003-05-20) [i686-linux]
  1
  $ 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

-- 
Nobu Nakada

In This Thread