require load autoload
require
1.kernel method,可以加載ruby文件蜀漆,也可以加載外部的庫。
2.相比load ,針對同一個文件嗜愈,它只加載一次
load
1.與require很類似,但是load會每次都重新加載文件。
2.大部分情況下病袄,除非你加載的庫變動頻繁益缠,需要重新加載以獲取最新版本幅慌,一般建議用require來代替load.
autoload
1.用法稍稍不同:autoload(const_name, 'file_path'), 其中const_name 通常是模塊名胰伍,或者類名骂租。
2.對于load和require但汞,在ruby運行到require/load時互站,會立馬加載文件云茸,而autoload則只有當(dāng)你調(diào)用module或者class時才會加載文件。
include extend
include
1.當(dāng)一個類或者模塊 include了一個module M時懊纳, 則該類或者模塊就擁有了該module M的方法嗤疯。
2.當(dāng)涉及多個類調(diào)用同一方法時茂缚,這個方法就可以抽離出來脚囊,放入module中,然后類只需include該module即可衬以。這樣的做法也正體現(xiàn)了DRY原則看峻。
extend
1.當(dāng)一個類或者對象使用extend 時溪窒,相當(dāng)于打開了該類或者該對象的單件類霉猛,為其添加了單件方法尺锚。
pretend
1.相比include珠闰,extend瘫辩, prepend「Available since Ruby 2」的知名度和使用率要少很多伏嗜。
2.prepend和include很像伐厌,當(dāng)一個類prepend或include 一個模塊時承绸,該模塊中的方法會成為該類的實例方法挣轨。
3.二者的區(qū)別在于军熏,模塊在祖先鏈中的位置。 使用include時卷扮,模塊在包含它的類之上。如果是prepend晤锹, 則是在prepend它的類之下或衡。而祖先鏈中位置的不同,決定了方法調(diào)用的順序舶担。