التابع const_defined?
الخاص بالصنف Module
في روبي
يتحقق التابع const_defined?
مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.
Float.const_defined?(:EPSILON) #=> true, found in Float itself
Float.const_defined?("String") #=> true, found in Object (ancestor)
BasicObject.const_defined?(:Hash) #=> false
إذا كانت الوحدة من النوع Module
، فسيتم فضلا عن ذلك فحص Object
وكذلك أسلافه.
Math.const_defined?(:String) #=> true, found in Object
في كل الأصناف أو الوحدات المفحوصة، إذا لم يكن الثابت موجودًا وكان هناك تحميل تلقائي (autoload) له، فسيتم إعادة true
مباشرة دون تحميل تلقائي (autoloading):
module Admin
autoload :User, 'admin/user'
end
Admin.const_defined?(:User) #=> true
إذا لم يتم العثور على الثابتة فلن يُستدعى التابع const_missing
، وسيعيد التابع const_defined?
القيمة false
.
إن أُعطي الوسيط inherit
القيمة false
، سينحصر البحث عن الثوابت في المستقبِل (receiver):
IO.const_defined?(:SYNC) #=> true, found in File::Constants (ancestor)
IO.const_defined?(:SYNC, false) #=> false, not found in IO itself
في هذه الحالة، سينطبق نفس منطق التحميل الذاتي (autoloading).
إذا كان الوسيط المعطى اسم ثابت غير صالح، فسيُطلق الخطأ NameError
مع الرسالة "wrong constant name name":
Hash.const_defined? 'foobar' #=> NameError: wrong constant name foobar
البنية العامة
const_defined?(sym, inherit=true)→ true or false
const_defined?(str, inherit=true)→ true or false
المعاملات
sym
رمز يمثل الثابتة.
inherit
إن أُعطي القيمة false
، سينحصر البحث عن الثوابت في المستقبِل (receiver):
str
سلسلة نصية تمثل الثابتة.
القيمة المُعادة
يعيد التابع const_defined?
القيمة true
إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.
أمثلة
مثال على استخدام التابع 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
: يعيد مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة. - التابع
const_get
: يتحقق من وجود ثابت بالاسم المحدد في الوحدة .