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

من موسوعة حسوب
< Ruby‏ | Module
مراجعة 11:50، 19 نوفمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يتحقق التابع const_get من وجود ثابت باسم محدد في الوحدة التي استُدعي معها. في حال تعيين المعامل inherit، فسيشمل البحث الأسلاف أيضًا (وكذلك Object إن كانت الوحدة من النوع Module).

تُعاد قيمة الثابت إذا عُثر على تعريف له؛ خلا ذلك، سيُطلق الخطأ NameError.

Math.const_get(:PI)   #=> 3.14159265358979

سيبحث التابع const_get بشكل تكراري (recursively) عن أسماء الثوابت إذا تم توفير اسم صنف من مجال أسماء (namespaced class name). اطلع مثلًا على المثال التالي:

module Foo; class Bar; end end
Object.const_get 'Foo::Bar'

تؤخذ الراية inherit بالحسبان عند كل عملية بحث:

module Foo
  class Bar
    VAL = 10
  end

  class Baz < Bar; end
end

Object.const_get 'Foo::Baz::VAL'         # => 10
Object.const_get 'Foo::Baz::VAL', false  # => NameError

إن لم يكن المعامل اسم ثابت صالح، فسيُطلق الخطأ NameError مع الرسالة "wrong constant name".

Object.const_get 'foobar' #=> NameError: wrong constant name foobar

البنية العامة

const_get(sym, inherit=true)  obj
const_get(str, inherit=true)  obj

المعاملات

sym‎

رمز يمثل الثابتة.

inherit‎

يحدد ما إذا كان يراد إجراء البحث بشكل تكراري (recursively).

str‎

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

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

تُعاد قيمة الثابت إذا عُثر على تعريف له.

أمثلة

مثال على استخدام التابع const_get‎:

Math.const_get(:PI)   #=> 3.14159265358979‎

انظر أيضا

  • التابع const_defined?‎: يتحقق مما إذا كانت للوحدة أو أحد أسلافها (ancestors) ثابت بالاسم المعطى.
  • التابع const_missing: يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة.

مصادر