Dans Ruby 2.0.0-p0, la variable __dir__
été introduite pour faciliter l’accès au répertoire du fichier en cours d’exécution.
Pourquoi __dir__
minuscule alors que __FILE__
est en majuscule?
Dans Ruby 2.0.0-p0, la variable __dir__
été introduite pour faciliter l’accès au répertoire du fichier en cours d’exécution.
Pourquoi __dir__
minuscule alors que __FILE__
est en majuscule?
Je pense que cela est dû au fait que __FILE__
est une constante de temps d'analyse alors que __dir__
est une fonction et renvoie File.dirname(File.realpath(__FILE__))
Pour plus de détails, voir Cette discussion
Les mérites relatifs de la langue, de la mise en œuvre des choix sont à l'extérieur de la portée d'une raisonnable de Débordement de Pile question. Cependant, c'est une bonne question parce qu'il identifie un risque de porter à confusion cas d'utilisation dans la langue et cherche à clarifier la distinction entre les deux éléments de la langue.
__FILE__
est un mot-CléEn Ruby 1.9, __FILE__
est un mot-clé. Même s'il ressemble à une méthode définie sur la classe de l'Objet, la source de l'Objet#__FILE__ , dit:
# File keywords.rb, line 68
def __FILE__
end
Une analyse rapide de la source dans 2.0.0-p0 n'est pas un des mots-clés.rb fichier, mais on suppose qu' __FILE__
syntaxiquement reste un mot-clé. Peut-être quelqu'un d'autre peut vous aider à trouver l'emplacement de la définition actuelle.
__dir__
est une MéthodeNoyau#__dir__ est en fait une méthode. Vous pouvez constater vous-même en grepping le Noyau est défini méthodes:
Kernel.methods.grep /__dir__/
# => [:__dir__]
Le fait qu' __FILE__
est à la fois un mot-clé et (un peu) une méthode est appelée dans un bug et certains bug lié commentaire. Il y avait aussi la discussion sur les avantages et les inconvénients de la convention de nommage dans le Rubis de Base du Forum.
Même si la réponse peut être un peu insatisfaisant, c'est l'état actuel des choses. Si c'est un problème de conception de la langue vous vous sentez fortement sur, avec le Rubis de l'équipe de base serait la bonne façon de l'aborder.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.