differences between Require, Load, Include and Extend methods
来源:互联网 发布:淘宝保存图片的软件 编辑:程序博客网 时间:2024/04/30 06:56
Here are the differences between Require, Load, Include and Extend methods:
Include
When you Include a module into your class as shown below, it’s as if you took the code defined within the module and inserted it within the class, where you ‘include’ it. It allows the ‘mixin’ behavior. It’s used to DRY up your code to avoid duplication, for instance, if there were multiple classes that would need the same code within the module.
The following assumes that the module Log and class TestClass are defined in the same .rb file. If they were in separate files, then ‘load’ or ‘require’ must be used to let the class know about the module you’ve defined.
module
Log
def
class_type
"This class is of type: #{self.class}"
end
end
class
TestClass
include Log
# ...
end
tc = TestClass.
new
.class_type
The above will print “This class is of type: TestClass”
Load
The load method is almost like the require method except it doesn’t keep track of whether or not that library has been loaded. So it’s possible to load a library multiple times and also when using the load method you must specify the “.rb” extension of the library file name.
Most of the time, you’ll want to use require instead of load but load is there if you want a library to be loaded each time load is called. For example, if your module changes its state frequently, you may want to use load to pick up those changes within classes loaded from.
Here’s an example of how to use load. Place the load method at the very top of your “.rb” file. Also the load method takes a path to the file as an argument:
load
'test_library.rb'
So for example, if the module is defined in a separate .rb file than it’s used, then you can use the
File: log.rb
module
Log
def
class_type
"This class is of type: #{self.class}"
end
end
File: test.rb
load
'log.rb'
class
TestClass
include Log
# ...
end
Require
The require method allows you to load a library and prevents it from being loaded more than once. The require method will return ‘false’ if you try to load the same library after the first time. The require method only needs to be used if library you are loading is defined in a separate file, which is usually the case.
So it keeps track of whether that library was already loaded or not. You also don’t need to specify the “.rb” extension of the library file name.
Here’s an example of how to use require. Place the require method at the very top of your “.rb” file:
require
'test_library'
Extend
When using the extend method instead of include, you are adding the module’s methods as class methods instead of as instance methods.
Here is an example of how to use the extend method:
module
Log
def
class_type
"This class is of type: #{self.class}"
end
end
class
TestClass
extend Log
# ...
end
tc = TestClass.class_type
The above will print “This class is of type: TestClass”
When using extend instead of include within the class, if you try to instantiate TestClass and call method class_type on it, as you did in the Include example above, you’ll get a NoMethodError. So, again, the module’s methods become available as class methods.
- differences between Require, Load, Include and Extend methods
- require, load, include, extend用法
- relationship and differences between Bayesian methods
- Ruby 中 require load extend include 区别
- Differences Between the Import and Load Utility
- ruby learning-- Difference between require and include
- require,include,load,extend的用途和区别
- require,include,load,extend的用途和区别
- Ruby Require VS Load VS Include VS Extend
- ruby中load,require以及include,extend的区别
- Ruby中Require、Load、Include和Extend的区别
- require,include,load,extend的用途和区别
- Ruby中Require、Load、Include和Extend的区别
- Rails中require、load、include、extend的区别
- Ruby中Require、Load、Include和Extend的区别
- Ruby 中的$LOAD_PATH,Require,Load,Include和Extend介绍
- Ruby中require,load,include和extend方法的区别
- Software Testing - The Differences between Load Testing and Stress Testing
- 解决win7下临时网络设置共享问题
- 技术学习网址记录
- GCC 环境变量
- EJBCA(4.0.1)在CentOS5.5上的安装(二)
- GridView中根据特殊标记设置不可编辑
- differences between Require, Load, Include and Extend methods
- Cow Solitaire
- 数据库优化
- windows7安装oracle 10g-----解决兼容性问题
- 学习笔记2011.4.29
- HTTP协议中的Content-Type
- MyEclipse快捷键记录
- Oracle数据提到文本文档进行查询的方法
- zoj 3497 mistwald