欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ruby中區(qū)分運(yùn)行來源的方法

 更新時間:2015年01月19日 09:34:10   投稿:junjie  
這篇文章主要介紹了Ruby中區(qū)分運(yùn)行來源的方法,本文講解的是類似Python中的if __name__ == '__main__':效果,其實(shí)Ruby中也有類似語法,需要的朋友可以參考下

當(dāng)我們在寫模塊的時候,或多或少需要直接運(yùn)行這個文件也可以執(zhí)行一些方法,但是這樣對于當(dāng)這個模塊被require或者include時,顯得不好,在ruby里,有沒有區(qū)分運(yùn)行來自當(dāng)前文件,還是被require的目標(biāo)文件調(diào)用呢?

Python可以

比如像Python這樣

復(fù)制代碼 代碼如下:

if __name__ == '__main__':
    print "from direct running"

Ruby當(dāng)然也可以

對于處處為程序員著想,擁有快樂編程理念的Ruby來說當(dāng)然是可以區(qū)別的。其原理就是判斷啟動文件是否為模塊的代碼文件。

復(fù)制代碼 代碼如下:

if __FILE__ == $0
    puts 'called from direct running'
end

舉個例子

工具類模塊utils.rb

復(fù)制代碼 代碼如下:

module Utils
    class StringUtils
        def self.test
            puts "test method myfile=" + __FILE__ + ';load from ' +  $0
        end
    end
end

if __FILE__ == $0
    puts 'called from direct running'
    Utils::StringUtils.test()
end

直接運(yùn)行,結(jié)果,if條件成立,執(zhí)行了輸出

復(fù)制代碼 代碼如下:

20:04:37-androidyue~/rubydir/test$ ruby utils.rb
called from direct running
test method myfile=utils.rb;load from utils.rb

引用Utils的類test.rb

復(fù)制代碼 代碼如下:

require './utils'
Utils::StringUtils.test()

運(yùn)行結(jié)果,引入模塊的條件不成立,沒有輸出called from direct running

復(fù)制代碼 代碼如下:

20:08:07-androidyue~/rubydir/test$ ruby test.rb
test method myfile=/home/androidyue/rubydir/test/utils.rb;load from test.rb

相關(guān)文章

最新評論