2010-08-27 110 views
2

我不知道爲什麼我應該使用:爲什麼要使用File.join()?

puts "In folder #{File.join ENV[HOME], projects}" 

相反的:

puts "In folder #{ENV[HOME]/projects}" 

我知道File.join的根據不同的操作系統將會把適當的分隔符(/ VS \)。

草稿已經如此緊密地綁在你使用的是什麼版本的紅寶石,你已經安裝了哪些寶石等。我的腳本往往不像ORM,(在這種情況下)獨立於操作系統。

我將永遠不會在Windows上運行此(其他依賴將使得腳本不反正工作)。

所以似乎並沒有被使用它一個強有力的理由,對吧?

+0

因爲它是 放置「In folder#{ENV [HOME]}/projects」 – Reactormonk 2010-08-27 09:17:11

回答

13

下列任何一項:

File.join("first","second") 
File.join("first/","second") 
File.join("first","/second") 
File.join("first/","/second") 

將返回

=> "first/second" 

難道是你一個很好的理由?

這只是一個例子,我能想到的。

實際上,您的目標不是連接2個字符串,您的目標是創建一條路徑。這看起來像是對我使用File.join的強有力的理由。

+0

這確實是一個強烈的原因:) – 2010-08-27 11:02:00

1

我希望join優雅地處理極端情況,當ENV[HOME]是空的一些奇怪的原因等。

8

尚未使用Ruby,但我期望Path.join能夠處理轉角情況,如路徑以或不以目錄分隔符結尾。此外,它表達的意圖多一點顯然比字符串連接和清晰度是恕我直言幾乎總是一個好主意。

1

除了其他答案,您的代碼將更具可移植性,正確的分隔符將被使用,無論unix/windows/etc如何。