2010-11-06 2 views
18

Из чтения документации очевидно, что File.join соединяет заданные параметры с символом /.
Когда это используется, в отличие от filenames.join('/'), полезно?Когда File.join полезен?

ответ

53

Существует другой, тонкое различие:

File.join('foo','bar') 
#=> "foo/bar" 
['foo','bar'].join('/') 
#=> "foo/bar" 

Но, если вы передадите аргумент уже заканчивающийся / (что довольно часто при работе с дорожками), вы не будете иметь две косые черты в результате :

File.join('foo/','bar') 
#=> "foo/bar" 
['foo/','bar'].join('/') 
#=> "foo//bar" 
+0

Не думал об этом, спасибо –

+0

Есть ли ошибка в SO, или я действительно был рассмотрен 5 раз в 3 минуты?! –

+2

Иногда вы считаете, что ваши самые тривиальные ответы получают самые высокие показатели. [Это] (http://stackoverflow.com/questions/1793693/why-would-yaml-be-unavailable-in-production/1793719#1793719) является одним из моих наиболее употребительных ответов. –

14

Он будет использовать File::SEPARATOR, что теоретически не обязательно должно быть /.

+5

На самом деле, он использует '/' для Windows. Поскольку «Файл :: SEPARATOR» есть «/» в Windows - только «Файл :: ALT_SEPARATOR» есть «\\». – sepp2k

+0

Спасибо, @ sepp2k. Может быть, вы должны добавить ответ, если знаете, почему они выбрали этот дизайн. –

+2

Существуют ли какие-либо платформы Ruby, на которых/не является допустимым разделителем файлов? –