2011-03-01 51 views

回答

51

它添加當前文件的目錄負載路徑。 $:表示加載路徑(它是一個數組),並且unshift預先存儲到數組的開頭。

它在那裏(和頂部)的原因是,所有這些需要不必擔心路徑。

7

從技術上講,它將文件的路徑添加爲ruby用來查找文件的加載路徑的第一個條目。 $:是一個魔術變量,更清楚地被$ LOAD_PATH引用。

ruby-1.9.2-p136 > $LOAD_PATH 
=> ["/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0"] 
ruby-1.9.2-p136 > $: 
=> ["/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0"] 
ruby-1.9.2-p136 > $:.unshift '.' 
=> [".", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1", "/Users/wesbailey/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0"] 
+0

我知道這是一個非常古老的問題,但是有沒有理由將它添加到頭部而不是尾部(推,說)?這是否使得它在聯盟中優先於同名文件的方式? (修補程序文件夾)。 – mckenzm 2015-01-08 08:31:43

+0

@mckenzm是的。您將它添加到頭部是因爲您希望在加載路徑中首先發現當前目錄中的文件。查找文件時,加載路徑從第一個到最後一個遍歷。 – Wes 2015-01-09 05:50:00

+0

這就是我所開發的,所以對於開發,單元測試目錄優先於集成測試目錄等。 – mckenzm 2015-01-09 19:55:23

3

它當前的工作目錄路徑添加到所有需要在項目中使用,添加該頂部後,我們不必操心,我們需要的文件路徑,但所有我們的文件要求必須在我們的主程序需要其他文件的同一目錄中。

$:是保留關鍵字來加載路徑。

相關問題