#一、模組定義及引用,模組就是一段**,裡面有一些方法放一起。
#定義模組用module...end 。模組與類非常相似,但是:
#a) 模組不可以有例項物件;
#b) 模組不可以有子類。
include math
puts sqrt(91);
module me
def sqrt(a)
puts a*a;
return a*a;
endpi=3.1415926
endinclude me
puts sqrt(10)
puts math.sqrt(10);
puts math::pi;
puts me::pi;#變數引用與方法呼叫不同,用雙冒號,而不是點號
#二、可變引數
def params(*num)
"this is text sqrt. "
puts num.size
puts num[1]
puts num.inspect
endparams(4,2,3)
#三、模組的第三個作用,實現類似於多重繼承的功能,也稱mix-in
#我們有乙個student類,有著person類的屬性和方法,還會做數學題——求平方根。已經有了me模組,只要mix-in 在student類裡就可以了。
module me
def sqrt(num, rx=1, e=1e-10)
num*=1.0
(num - rx*rx).abs end
endclass person
def talk
puts "i'm talking."
endend
class student < person
include me
endastudent=student.new
astudent.talk # i'm talking.
puts astudent.sqrt(20.7,3.3) # 4.54972526643248
#通過「 < 父類名 」 ,乙個子類可以得到父類的屬性和方法;通過「 include模組名 」 ,乙個子類可以得到某個模組的常量和方法。類不能被 include 。
#四、extend,混型的另一種情況
module me
def sqrt(num, rx=1, e=1e-10)
num*=1.0
(num - rx*rx).abs end
endclass student
endastudent=student.new
astudent.extend(me)
puts astudent.sqrt(93.1, 25) # 9.64883412646315
#include 方法為乙個類的所有物件包含某個模組; extend 方法為乙個類的某個物件包含某個模組。
#五、require和load
#require,load用於包含檔案;include,extend則用於包含模組。
#require載入檔案一次,load載入檔案多次。
#require載入檔案時可以不加字尾名,load載入檔案時必須加字尾名。
#require一般情況下用於載入庫檔案,而load用於載入配置檔案。
#利用load 多次載入檔案的特性,可以用來實現程式的無縫公升級和系統的熱部署。程式功能改變了,你只需要重新load 一次,其它**與它再次互動的時候,這個程式實際上已經不是原來的程式了。
#e7.4-3.rb
require "class"#引入了class.rb檔案
class student < person
include me
endastudent=student.new("zhangren",100)
astudent.talk # i'm talking.
puts astudent.sqrt(77,2) # 8.77496438739435
load "class.rb"
class student end
astudent=student.new("zzr@...")
astudent.extend(me)
puts astudent.sqrt(100.1, 12) # 10.0049987506246
astudent.talk
學習筆記1 Ruby模組 module
我們使用模組的的主要目的是用來組織 模組化 有點類似命名空間,但卻有很大的不同 一 建立和使用模組 用module關鍵字來定義模組 module沒有例項,我們使用時把module混合到類中來使用,我們也可以這麼理解,把module裡的內容拷貝乙份放到類裡,成為類的一部分 我們可以把模組放到乙個單獨的...
python學習筆記 四 模組
模組實現函式重用,import匯入模組。import sys for i in sys.argv print i 執行結果 c users liyz b desktop work func.py 其中,sys模組包含了與python直譯器和環境有關的函式。sys.argv表示包含了命令列引數的字串列...
ruby 學習筆記
usr bin ruby puts ruby 資料型別 puts ruby支援的資料型別包括基本的number string ranges symbols,以及true false和nil這幾個特殊值,同時還有兩種重要的資料結構 array和hash。puts n array n ary liqia...