當(dāng)我們在寫模塊的時(shí)候,或多或少需要直接運(yùn)行這個(gè)文件也可以執(zhí)行一些方法,但是這樣對(duì)于當(dāng)這個(gè)模塊被require或者include時(shí),顯得不好,在ruby里,有沒有區(qū)分運(yùn)行來自當(dāng)前文件,還是被require的目標(biāo)文件調(diào)用呢?
Python可以
比如像Python這樣
Ruby當(dāng)然也可以
對(duì)于處處為程序員著想,擁有快樂編程理念的Ruby來說當(dāng)然是可以區(qū)別的。其原理就是判斷啟動(dòng)文件是否為模塊的代碼文件。
舉個(gè)例子
工具類模塊utils.rb
if __FILE__ == $0
puts 'called from direct running'
Utils::StringUtils.test()
end
直接運(yùn)行,結(jié)果,if條件成立,執(zhí)行了輸出
引用Utils的類test.rb
運(yùn)行結(jié)果,引入模塊的條件不成立,沒有輸出called from direct running
新聞熱點(diǎn)
疑難解答
圖片精選