التابع const_get‎ الخاص بالصنف Module في روبي

من موسوعة حسوب

يتحقق التابع 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: يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة.

مصادر