التابع 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
).