2007-02-13
7.4 require 和 load
程序 E7.3-1.rb中先写了Me模块,然后include Me模块,实现了Mix-in功能,但是,这样没能做到代码复用。
我将 Me模块写在文件 E7.4-1.rb中,将 Person类写在文件 E7.4-2.rb中,这时候 Student类如何使用 Me模块和 Person类呢?这里要用到require方法。
看程序 E7.4-3.rb :
ruby 代码
- #E7.4-3.rb
- require "E7.4-1"
- require "E7.4-2"
- class Student < Person
- include Me
- end
- aStudent=Student.new
- aStudent.talk # => I'm talking.
- puts aStudent.sqrt(77,2) # => 8.77496438739435
使用 require方法让你的程序文件变得简洁有力。 require方法包含另一个文件,另一个文件名需要是一个字符串。
还有一个 load 方法与require 方法相对应,也用来包含另一个文件。
看程序 E7.4-4.rb :
ruby 代码
- #E7.4-4.rb
- load "E7.4-1.rb"
- class Student
- end
- aStudent=Student.new
- aStudent.extend(Me)
- puts aStudent.sqrt(100.1, 12) # => 10.0049987506246
require包含文件,只加载一次,遇到同一文件时自动忽略;不同路径下的同名文件会多次加载。 load包含文件,加载多次,即使是相同路径下同一文件。
总结一下:
require,load用于包含文件;include,extend则用于包含模块。
require加载文件一次,load加载文件多次。
require加载文件时可以不加后缀名,load加载文件时必须加后缀名。
require一般情况下用于加载库文件,而load用于加载配置文件。
利用load 多次加载文件的特性,可以用来实现程序的无缝升级和系统的热部署。程序功能改变了,你只需要重新load 一次,其它代码与它再次交互的时候,这个程序实际上已经不是原来的程序了。
完整阅读,请看我写的 Ruby语言中文教程all in one
发表评论
- 浏览: 48126 次
- 性别:


- 详细资料
搜索本博客
最近加入圈子
最新评论
-
3.1 注释与分行
正想知道ruby是怎么样生成像javadoc那样的文档,多谢了.
-- by yangzhihuan -
变量一定要有类型吗(一)
从lambda演算的角度说我们并不关心一个东西到底是什么,而只看作一个符号并定义 ...
-- by whisper -
变量一定要有类型吗(一)
这个问题还需要讨论啊!...无语了...
-- by wiwolf -
变量一定要有类型吗(一)
假设若干年后,有一篇搜索引擎报告指出:A)21世纪初期,网络信息以中文和英文居多 ...
-- by dustinth -
变量一定要有类型吗(一)
more: http://en.wikipedia.org/wiki/Type ...
-- by aardvark






评论排行榜