Почему __FILE__ в верхнем регистре и __dir__ в нижнем регистре?
В Ruby 2.0.0-p0 была введена переменная __dir__ для легкого доступа к каталогу исполняемого файла.
Почему __dir__ в нижнем регистре, если __FILE__ имеет верхний регистр?
Ответ 1
Я думаю, это потому, что __FILE__ является постоянной времени синтаксического анализа, тогда как __dir__ является функцией и возвращает File.dirname(File.realpath(__FILE__))
Относительные достоинства вариантов реализации языка выходят за рамки разумного вопроса. Тем не менее, это хороший вопрос, потому что он идентифицирует потенциально запутанный вариант использования в языке и стремится прояснить различие между двумя языковыми элементами.
Ключевые слова, методы и ключевые слова, похожие на методы
__FILE__ - это __FILE__ слово
В Ruby 1.9 ключевое слово __FILE__. Хотя он выглядит как метод, определенный в классе Object, источник для Object #__ FILE__ говорит:
# File keywords.rb, line 68
def __FILE__
end
Быстрое сканирование источника в 2.0.0-p0 не __FILE__ к появлению файла __FILE__, но предполагается, что синтаксически __FILE__ остается ключевым словом. Возможно, кто-то еще может указать вам местоположение текущего определения.
__dir__ - это метод
Ядро #__ dir__ на самом деле является методом. Вы можете убедиться в этом сами, выбрав определенные ядром методы:
Хотя ответ может быть немного неудовлетворительным, это текущее положение дел. Если вы решаете проблему языкового дизайна, то участие в основной команде Ruby было бы правильным способом ее решения.