Ruby學習筆記四 模組

2021-05-21 18:56:59 字數 2159 閱讀 4410

#一、模組定義及引用,模組就是一段**,裡面有一些方法放一起。

#定義模組用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...