التابع ‎const_defined?‎‎ الخاص بالصنف Module في روبي

من موسوعة حسوب
< Ruby‏ | Module
مراجعة 22:16، 26 أكتوبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>‎const_defined?‎‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Rub...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يتحقق التابع const_defined? مما إذا كانت للوحدة الذي استُدعي معه أو أحد أسلافها (ancestors) ثابت بالاسم المعطى:

إذا كانت الوحدة من النوع Module ، فسيتم فحص Object وكذلك أسلافه:

في كل الأصناف أو الوحدات المفحوصة، إذا لم يكن الثابت موجودًا وكان هناك تحميل تلقائي (autoload) له ، فسيتم إعادة true مباشرة دون تحميل تلقائي (autoloading):

إذا لم يتم العثور على الثابت فلن يُستدعى التابع const_missing وسيعيد التابع القيمة false. إن إعطى الوسيط inherit القيمة false، سينحصر البحث عن الثوابت في المستقبِل:

في هذه الحالة ، ينطبق نفس منطق التحميل الذاتي (autoloading). إذا كان الوسيط اسم ثابت غير صالح، فسيُطلق الخطأ NameError مع رسالة "wrong constant name name":

البنية العامة

const_defined?(sym, inherit=true) true or false
const_defined?(str, inherit=true) true or false

المعاملات

sym‎

inherit‎

str‎

القيمة المُعادة

أمثلة

مثال على استخدام التابع const_defined?‎:

Float.const_defined?(:EPSILON)      #=> true, found in Float itself
Float.const_defined?("String")      #=> true, found in Object (ancestor)
BasicObject.const_defined?(:Hash)   #=> false‎

انظر أيضا

  • التابع class_variables: يعيد مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة . يشمل ذلك أسماء متغيرات الصنف في كل الوحدات المُضمّنة، ما لم يتم تعيين الوسيط inherit عند القيمة false.
  • التابع const_get: يتحقق من وجود ثابت بالاسم المحدد في الوحدة . في حال تعيين inherit، فسيشمل البحث الأسلاف أيضًا (وكذلك Object إن كانت الوحدة من النوع Module).

مصادر