التابع const_defined? الخاص بالصنف Module في روبي
يتحقق التابع 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).