التابع ‎Module.const_defined?‎‎ في روبي

من موسوعة حسوب
< Ruby‏ | 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 مباشرةً دون تحميل تلقائي:

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

في هذه الحالة، سيُطبَّق نفس منطق التحميل التلقائي. إذا كان المعامل المعطى اسم ثابت غير صالح، فسيُطلق الخطأ 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‎

سلسلة نصية تمثل الثابت.

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

تعاد القيمة true إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحوي الثابت sym أو 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: يعيد مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة.
  • التابع const_get: يتحقق من وجود ثابت بالاسم المحدد في الوحدة.

مصادر