您的位置 首页

Ruby autoload

autoload可以加载(注册)任何模块的类或常量,不能有::操作符的… 特别广泛应用在如下代码结…

autoload可以加载(注册)任何模块的类或常量,不能有::操作符的…
特别广泛应用在如下代码结构:

#rack.rb
#这样的文件结构ruby源码里随处可见
module Rack
  autoload :Builder, “rack/builder”
  autoload :Cascade, “rack/cascade”
  autoload :Chunked, “rack/chunked”
  autoload :CommonLogger,”rack/commonlogger”
  autoload :ConditionalGet,”rack/conditionalget”
  autoload :Config, “rack/config”
 
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

本文来自网络,不代表找知博客立场,转载请注明出处:http://zhaozhiyong.cn/119.html

作者: 于老大

关注微博
返回顶部
//