• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby学习之module

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我们可以认为module是一个专门存放一系列方法和常量的工具箱。

module和class非常像, 只是module不能创建实例也不能有子类, 它们仅仅能存放东西。

例如:

module Circle

  PI = 3.141592653589793
  
  def Circle.area(radius)
    PI * radius**2
  end
  
  def Circle.circumference(radius)
    2 * PI * radius
  end
end

 module书写格式

module ModuleName
    #
end

就像类名一样, module名也用大写字母,并且不使用下划线_。

module的一个最主要的作用是把方法和常量分离到一个有名字的空间中,这个空间叫做名字空间(namespacing),这样就不会混淆例如Math::PI和Circle::PI这两种不同的PI值。两个冒号::被称作范围解析操作符, 它用来告诉Ruby去哪找到我们所需要的那个值或方法,如果我们想找Math::PI,Ruby知道要到Math的module中去找PI。

 

一些module已经包含在了Ruby解释器中,但是有些需要显式地包含进来, 我们可以用关键字require,如下:

require "module"

如果我们想要用Ruby的Date module来显示今天的日期, 但是我们还没有用require把它包含进来,那么我们需要进行如下操作:

require "date"
puts Date.today

 

我们当然可以用require包含更多的module, 但是我们还可以用include关键字

任何类如果include了一个module,那么这个类可以使用这个module的方法。

使用include有一个好处, 那就是我们不再必须写包含常量或方法的module名了,因为module中所有的信息都已经包含进了include这个module的类, 我们可以直接使用PI而不用Math::PI, 如下:

class Angle
  include Math
  attr_accessor :radians
  
  def initialize(radians)
    @radians = radians
  end
  
  def cosine
    cos(@radians)
  end
end

acute = Angle.new(1)
acute.cosine

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
RubyonRails创建https应用发布时间:2022-07-13
下一篇:
比较Perl、PHP、Python、Java和Ruby 【转载】发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap