我理解之间的细微差异require
,load
以及autoload
在Ruby中,但我的问题是,你怎么知道该用哪一个呢?
除了能够load
在匿名模块中"包装"a之外,require
似乎更受欢迎.
但是然后autoload
允许你懒惰加载文件 - 听起来很棒但我不确定你获得了什么require
一种方法比另一种方法更受欢迎吗?是否存在一种方法脱颖而出的情况?
Bri*_*ell 62
一般来说,你应该使用require
.load
每次都会重新加载代码,所以如果你从几个模块中执行它,你将会做很多额外的工作.autoload
声音的懒惰在理论上很好,但许多Ruby模块执行诸如猴子修补其他类之类的操作,这意味着程序中不相关部分的行为可能取决于给定类是否已被使用.load
正在被弃用,因此应避免使用它.
如果您想制作自己的自动重新加载器,每次更改时或每次有人点击URL时加载您的代码(为了开发目的,您不必每次都重新启动服务器),那么使用require
它是合理的.
cra*_*crv 18
mylibrary.rb
puts "I was loaded!"
class MyLibrary
end
Run Code Online (Sandbox Code Playgroud)
试试irb
irb(main):001:0> require 'mylibrary'
I was loaded!
=> true
irb(main):001:0> autoload :MyLibrary, 'mylibrary'
=> nil
irb(main):002:0> MyLibrary.new
I was loaded!
=> #<MyLibrary:0x0b1jef>
Run Code Online (Sandbox Code Playgroud)
看到不同.
小智 12
这里是你得到什么autoload
了require
:
autoload
主要用于加速Ruby程序或Rails应用程序的初始化阶段.通过在需要之前不加载资源,它可以加速相当多的事情.
另一个优点是,如果用户不使用某些功能,您可能不需要加载代码的某些部分 - 从而缩短加载时间并减少内存占用.
归档时间: |
|
查看次数: |
21805 次 |
最近记录: |