التابع ‎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: يتحقق من وجود ثابت بالاسم المحدد في الوحدة .

مصادر