新聞中心
模塊(Module)是一種把方法、類和常量組合在一起的方式。模塊(Module)為您提供了兩大好處:

十載的府谷網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整府谷建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“府谷網(wǎng)站設(shè)計”,“府谷網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
- 模塊提供了一個命名空間和避免名字沖突。
- 模塊實現(xiàn)了 mixin 裝置。
模塊(Module)定義了一個命名空間,相當(dāng)于一個沙盒,在里邊您的方法和常量不會與其他地方的方法常量沖突。
模塊類似與類,但有一下不同:
- 模塊不能實例化
- 模塊沒有子類
- 模塊只能被另一個模塊定義
module Identifier statement1 statement2 ........... end
模塊常量命名與類常量命名類似,以大寫字母開頭。方法定義看起來也相似:模塊方法定義與類方法定義類似。
通過類方法,您可以在類方法名稱前面放置模塊名稱和一個點號來調(diào)用模塊方法,您可以使用模塊名稱和兩個冒號來引用一個常量。
實例
#!/usr/bin/Ruby # 定義在 trig.rb 文件中的模塊 module Trig PI = 3.141592654 def Trig.sin(x) # .. end def Trig.cos(x) # .. end end
我們可以定義多個函數(shù)名稱相同但是功能不同的模塊:
#!/usr/bin/ruby # 定義在 moral.rb 文件中的模塊 module Moral VERY_BAD = 0 BAD = 1 def Moral.sin(badness) # ... end end
就像類方法,當(dāng)您在模塊中定義一個方法時,您可以指定在模塊名稱后跟著一個點號,點號后跟著方法名。
require 語句
require 語句類似于 C 和 C++ 中的 include 語句以及 Java 中的 import 語句。如果一個第三方的程序想要使用任何已定義的模塊,則可以簡單地使用 Ruby require 語句來加載模塊文件:
語法
require filename
在這里,文件擴展名.rb不是必需的。
實例
$LOAD_PATH << '.'
require 'trig.rb'
require 'moral'
y = Trig.sin(Trig::PI/4)
wrongdoing = Moral.sin(Moral::VERY_BAD)在這里,我們使用$LOAD_PATH << '.'讓 Ruby 知道必須在當(dāng)前目錄中搜索被引用的文件。如果您不想使用 $LOAD_PATH,那么您可以使用require_relative來從一個相對目錄引用文件。
注意:在這里,文件包含相同的函數(shù)名稱。所以,這會在引用調(diào)用程序時導(dǎo)致代碼模糊,但是模塊避免了這種代碼模糊,而且我們可以使用模塊的名稱調(diào)用適當(dāng)?shù)暮瘮?shù)。
include 語句
您可以在類中嵌入模塊。為了在類中嵌入模塊,您可以在類中使用 include 語句:
語法
include modulename
如果模塊是定義在一個單獨的文件中,那么在嵌入模塊之前使用 require 語句引用該文件時必需的。
實例
假設(shè)下面的模塊寫在 support.rb 文件中。
module Week
FIRST_DAY = "Sunday"
def Week.weeks_in_month
puts "You have four weeks in a month"
end
def Week.weeks_in_year
puts "You have 52 weeks in a year"
end
end
現(xiàn)在,您可以在類中引用該模塊,如下所示:
#!/usr/bin/ruby
$LOAD_PATH << '.'
require "support"
class Decade
include Week
no_of_yrs=10
def no_of_months
puts Week::FIRST_DAY
number=10*12
puts number
end
end
d1=Decade.new
puts Week::FIRST_DAY
Week.weeks_in_month
Week.weeks_in_year
d1.no_of_months這將產(chǎn)生以下結(jié)果:
Sunday You have four weeks in a month You have 52 weeks in a year Sunday 120
Ruby 中的 Mixins
在閱讀本節(jié)之前,您需要初步了解面向?qū)ο蟮母拍睢?/p>
當(dāng)一個類可以從多個父類繼承類的特性時,該類顯示為多重繼承。
Ruby 不直接支持多重繼承,但是 Ruby 的模塊(Module)有另一個神奇的功能。它幾乎消除了多重繼承的需要,提供了一種名為 mixin 的裝置。
Mixins 向您提供了一種完美的為類添加功能的控制方式。但是,它們真正的強大在于當(dāng) mixin 中的代碼開始與使用它的類中的代碼交互時。
讓我們看看下面的示例代碼,深入了解 mixin:
module A def a1 end def a2 end end module B def b1 end def b2 end end class Sample include A include B def s1 end end samp=Sample.new samp.a1 samp.a2 samp.b1 samp.b2 samp.s1
- 模塊 A 由方法 a1 和 a2 組成。
- 模塊 B 由方法 b1 和 b2 組成。
- 類 Sample 包含了模塊 A 和 B。
- 類 Sample 可以訪問所有四個方法,即 a1、a2、b1 和 b2。
因此,您可以看到類 Sample 繼承了兩個模塊,您可以說類 Sample 使用了多重繼承或 mixin 。
文章名稱:創(chuàng)新互聯(lián)Ruby教程:Ruby模塊(Module)
文章地址:http://m.5511xx.com/article/copegpp.html


咨詢
建站咨詢
