例:
$ echo 'class AutoloadDemo; end' > autoload_demo.rb
$ ruby -e "
> p autoload? :AutoloadDemo
> p defined?(AutoloadDemo)
> autoload :AutoloadDemo, './autoload_demo'
> p autoload? :AutoloadDemo
> p defined?(AutoloadDemo)
> p AutoloadDemo
> "
nil
nil
"./autoload_demo"
"constant"
AutoloadDemo
説明:定数 (メソッドautoload
の引数シンボル) の「遅延読み込み」を登録します。autoload
その記号 (例では ) で表されるコスタントAutoloadDemo
がスクリプト内で検出されると、Ruby はその定数 ( の 2 番目の引数autoload
) に関連付けられたファイルを必要とします。autoload?
「この定数はオートローディング用に登録されていますか?」という質問に対する答えにすぎません。
常時登録
Ruby では、定数はプログラムの実行中に同じであるべき値です。大文字で始まる必要があります。
定数登録とは、Ruby インタープリターが を呼び出したときに行うことautoload
です。
OK、次の実行でこの定数に遭遇したときに、定義されていない場合は、NameError を発生させる代わりに、このファイルを必要とし、定数が定義されているかどうかを確認します。もしそうなら、私は実行を続けます。