这四个方法还是很好玩很有用,也是比较容易混的。
1.require( aString ) -> true or false
Ruby
试图载入一个名为aString的库,如果成功了就返回true,否则返回false。如果给定的值不是一个绝对路径,那么将会在$:中查找。如果给定的
名字带有.rb,则作为源文件载入;如果扩展名为.so,.o,.dll等(根据不同平台),Ruby将这些作为扩展程序来载入;否则,Ruby会自动尝
试在给定的文件名后面加.rb,.so,.dll等。已经载入的库会放到数组$"中,已经在$"里的则不会被重复装载。比如:
require "my-library.rb"
require "db-driver"
|
2.load( aFileName, wrap=false ) -> true
装载并执行aFileName文件,文件搜索方法同上面的require。wrap是可选参数,默认为false,如果设为true,则这个文件将在匿名模块下运行,从而包括调用者的名字空间。任何aFileName里面的局部变量在装载它的环境下是不可用的。
3.include
include主要用来将一个模块插入(mix)到一个类或者其它模块。这个模块的方法在引入它的类或模块中以函数的形式调用(没有一个receiver)。这个指令运行时会执行Module.append_features方法。
4.extend
extend 用来在一个对象(object,或者说是instance)中引入一个模块,这个类从而也具备了这个模块的方法。
module Mod
def hello2
"Hello from Mod.n"
end
end
class Klass
def hello
"Hello from Klass.n"
end
end
k = Klass.new
k.hello
#"Hello from Klass.n"
k.hello2
# NoMethodError: undefined method `hello2' …
k.extend(Mod)
#<0x2e4c530><!---->
k.hello
#"Hello from Mod.n"
|
分享到:
相关推荐
### Ruby中require、load、include、extend的区别介绍 在Ruby编程语言中,为了实现代码的重用和组织,开发者经常需要引入外部文件或模块。在这一过程中,`require`、`load`、`include`、`extend`这几个关键字发挥了...
在Ruby中,模块也可以通过require和load命令来加载外部库,这些库可以是.rb文件或C扩展。模块和包的使用极大地增强了Ruby的模块化编程能力,使得开发者可以构建复杂的、易于维护的应用程序。模块是Ruby编程语言中不...
39.include 和 require:在 PHP 中,include 是指包含文件,而 require 则是指需要文件。 40.once 和 return:在 PHP 中,once 是指一次性语句,而 return 则是指返回语句。 41.error 和 warning:在 PHP 中,...
As a second example, for your enlightenment, we include the ADF problem which shows you how to build a simple 2-class "dendritic" classifier (see my paper in the sfi account). You should not need ...
- **Dynamic Loading:** The runtime system supports dynamic loading of classes, enabling applications to load new classes at runtime. This feature is commonly used in frameworks that need to extend ...