免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1992 | 回复: 1
打印 上一主题 下一主题

Ruby的require [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-24 23:01 |只看该作者 |倒序浏览
Ruby的require











require一般用来加载其它的类,如:
#Ruby代码  :
  1. require 'dbi'  
  2. require "rexml/document"
  3. 复制代码
复制代码
但是上面加载的是标准类库里面的文件,当然也可以是已安装的gems文件,
但是如果是自己在本地写的文件,就不能直接用require了,
而应该这样:
  1. #E7.4-1.rb Module(模块)
  2. module Module1
  3.   def sqrt(num, rx=1, e=1e-10)
  4.     num*=1.0
  5.     (num - rx*rx).abs <e ? rx : sqrt(num, (num/rx + rx)/2, e)
  6.   end
  7. end
  8. 复制代码
复制代码
  1. #E7.4-2.rb Person 类
  2. class Person
  3.   def talk
  4.     puts "I'm talking."
  5.   end
  6. end
  7. 复制代码
复制代码
#用require_relative加载本地Ruby文件
  1. require_relative "E7.4-1"
  2. require_relative "E7.4-2"

  3. class Student < Person
  4.   include Module1
  5. end

  6. aStudent=Student.new
  7. aStudent.talk # I'm talking.
  8. puts aStudent.sqrt(77,2) # 8.77496438739435
  9. 复制代码
复制代码
#但是这个如果想直接通过require的方式来引用也是有办法的,那就是在文件头部将当前目录作为ruby加载的路径:
#其中File.dirname(__FILE__)代表当前路径,而$LOAD_PATH.unshift方法的目的就是将当前目录作用ruby标准的加载路径
  1. $LOAD_PATH.unshift(File.dirname(__FILE__)) unless $LOAD_PATH.include?(File.dirname(__FILE__))  
  2. require "E7.4-1"
  3. require "E7.4-2"

  4. class Student < Person
  5.   include Module1
  6. end

  7. aStudent=Student.new
  8. aStudent.talk # I'm talking.
  9. puts aStudent.sqrt(77,2) # 8.77496438739435
  10. 复制代码
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-02-24 23:02 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP