ruby - معنى - yukihiro matsumoto




لماذا__FILE__ أحرف كبيرة و__dir__ صغيرة؟ (2)

في Ruby 2.0.0-p0 ، تم تقديم متغير __dir__ لسهولة الوصول إلى دليل الملف الجاري تنفيذه حاليًا.

لماذا __dir__ صغيرة عندما يكون __FILE__ كبيرًا؟


TL. دكتور

المزايا النسبية لاختيارات تطبيق اللغة هي خارج نطاق سؤال تجاوز سعة المكدس المعقول. ومع ذلك ، فهذا سؤال جيد لأنه يحدد حالة استخدام محيرة محتملة في اللغة ويسعى إلى توضيح الفرق بين عنصري اللغة.

الكلمات الرئيسية ، والطرق ، والكلمات الرئيسية التي تبدو وكأنها طرق

__FILE__ هي كلمة رئيسية

في روبي 1.9 ، __FILE__ هي كلمة رئيسية. على الرغم من أنها تبدو كطريقة محددة في فئة الكائن ، إلا أن مصدر Object#__FILE__ يقول:

# File keywords.rb, line 68
def __FILE__
end

لم يؤدي الفحص السريع للمصدر في 2.0.0-p0 إلى تشغيل ملف الكلمات الرئيسية. __FILE__ ، لكن يفترض المرء أن __FILE__ يظل بشكل عام كلمة رئيسية. ربما يستطيع شخص آخر توجيهك إلى موقع التعريف الحالي.

__dir__ هي طريقة

Kernel#__dir__ هي في الواقع طريقة. يمكنك أن ترى ذلك بنفسك عن طريق استيعاب الأساليب المحددة في Kernel:

Kernel.methods.grep /__dir__/
# => [:__dir__]

البق والمناقشات

يتم __FILE__ حقيقة أن __FILE__ كلمة رئيسية و (نوع من) الأسلوب في الأخطاء وبعض التعليقات المتعلقة بالأخطاء . كان هناك أيضًا نقاش حول العديد من إيجابيات وسلبيات اتفاقية التسمية في منتدى Ruby-Core .

على الرغم من أن الإجابة قد تكون غير مرضية إلى حد ما ، فإن هذا هو الوضع الحالي. إذا كانت هناك مشكلة في تصميم اللغة تشعر بها بشدة ، فإن المشاركة في فريق Ruby الأساسي ستكون الطريقة المناسبة لمعالجتها.


أعتقد أن السبب في ذلك هو أن __FILE__ في تحليل الوقت في حين أن __dir__ هي دالة وتقوم بإرجاع File.dirname(File.realpath(__FILE__))

لمزيد من التفاصيل ، راجع هذه المناقشة





language-implementation