Почему я должен использовать File.join ()? - PullRequest
2 голосов
/ 27 августа 2010

Интересно, почему я должен использовать:

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

Вместо:

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

Мне известно, что File.join установит соответствующий разделитель (/ vs \) в зависимости от ОС.

Скрипт уже настолько тесно связан с тем, какую версию ruby ​​вы используете, какие драгоценные камни вы установили и так далее. Мои сценарии не похожи на ORM (в данном случае) независимы от ОС.

Я никогда не буду запускать это в Windows (другие зависимости приведут к тому, что скрипт все равно не будет работать).

Так что, кажется, нет веской причины для его использования, верно?

Ответы [ 4 ]

13 голосов
/ 27 августа 2010

Любое из следующего:

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

Вернется

=> "first/second"

Может ли это быть хорошей причиной для вас?

Это только один пример, который я могу вспомнить.

На самом деле ваша цель - не объединять 2 строки, ваша цель - создать путь. Это выглядит как веская причина для использования File.join для меня.

8 голосов
/ 27 августа 2010

Не использовал Ruby, но я ожидаю, что Path.join будет обрабатывать угловые случаи, как пути, заканчивающиеся разделителями каталогов или без них. Кроме того, он выражает намерение немного более четко, чем конкатенация строк, и ясность, по-моему, почти всегда является хорошей идеей.

1 голос
/ 28 августа 2010

В дополнение к другим ответам ваш код будет более переносимым, будет использоваться правильный разделитель независимо от Unix / Windows / и т. Д.

1 голос
/ 27 августа 2010

Я ожидаю, что join будет корректно обрабатывать угловые случаи, например, когда ENV[HOME] пуст по какой-то странной причине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...