3 回答

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
Ruby中的“ include”和“ require”有什么區(qū)別?
回答:
include和require方法的作用截然不同。
require方法可以完成大多數(shù)其他編程語(yǔ)言所包含的功能:運(yùn)行另一個(gè)文件。它還會(huì)跟蹤您過(guò)去所需的內(nèi)容,并且不需要兩次相同的文件。要運(yùn)行沒(méi)有此附加功能的另一個(gè)文件,可以使用load方法。
include方法將從另一個(gè)模塊中獲取所有方法,并將它們包括到當(dāng)前模塊中。與require相比,這是語(yǔ)言級(jí)別的事情,而不是文件級(jí)別的事情。include方法是使用其他模塊(通常稱為混合)“擴(kuò)展”類的主要方法。例如,如果您的類定義了方法“ each”,則可以包括mixin模塊Enumerable,并且它可以充當(dāng)集合。由于include動(dòng)詞在其他語(yǔ)言中的用法非常不同,因此可能會(huì)造成混淆。
資源
因此,如果您只想使用模塊,而不是擴(kuò)展它或進(jìn)行混入,那么您將要使用require。
奇怪的是,Ruby的require類似于C中的include,而Ruby的include是幾乎沒(méi)有像C的include。

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
從元編程Ruby書中,
該require()方法與十分相似load(),但是其目的不同。您用于load()執(zhí)行代碼,并 require()用于導(dǎo)入庫(kù)。

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果使用模塊,則意味著將所有方法都帶入類中。如果您extend使用帶有模塊的類,則意味著您將“引入”模塊的方法作為類方法。如果您include使用模塊類,則意味著您將“引入”模塊的方法作為實(shí)例方法。
EX:
module A
def say
puts "this is module A"
end
end
class B
include A
end
class C
extend A
end
B.say => B:Class的未定義方法“ say”
B.new.say =>這是模塊A
C.say =>這是模塊A
C.new.say => C:Class的未定義方法“ say”
- 3 回答
- 0 關(guān)注
- 1138 瀏覽
添加回答
舉報(bào)