在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我们可以认为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
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论