autoload可以加载(注册)任何模块的类或常量,不能有::操作符的…
特别广泛应用在如下代码结构:
特别广泛应用在如下代码结构:
#rack.rb
#这样的文件结构ruby源码里随处可见
module Rack
end
autoload本质是会调用Kernel.require,但是又和require有区别。
可以说autoload是一个smart的require…比require更加智能灵活。Just-in-Time..
几个简单的例子:
要被require的文件,mylibrary.rb
puts "I was loaded!" class MyLibrary end
require mylibrary时文件立即执行。
irb(main):001:0> require 'mylibrary' I was loaded! => true
使用autoload,只有使用到需要的常量或类文件才被加载。。我们真正需要用某个文件时才加载,而require是直接加载,不管你是否会用到。
irb(main):001:0> autoload :MyLibrary, 'mylibrary' => nil irb(main):002:0> MyLibrary.new I was loaded! => #
转自:http://hooopo.iteye.com/blog/604975
此文章通过 python 爬虫创建,原文是自己的csdn 地址: Ruby autoload