الفرق بين المراجعتين لصفحة: «Ruby/Module/const get»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>const_get</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تص...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Module]] | [[تصنيف: Ruby Module]] | ||
يتحقق التابع <code>const_get</code> من وجود ثابت بالاسم المحدد في الوحدة | يتحقق التابع <code>const_get</code> من وجود ثابت (بالاسم المحدد) في الوحدة التي استُدعي معها. في حال تعيين الوسيط <code>inherit</code>، فسيشمل البحث الأسلاف أيضًا (وكذلك <code>Object</code> إن كانت الوحدة من النوع <code>Module</code>). | ||
تُعاد قيمة الثابت إذا عُثر على تعريف لتلك الثابتة، خلا ذلك، سيُطلق الخطأ <code>NameError</code>.<syntaxhighlight lang="ruby"> | |||
Math.const_get(:PI) #=> 3.14159265358979 | |||
تُحترم الراية <code>inherit</code> عند كل بحث. مثلا: | </syntaxhighlight>سيبحث التابع <code>const_get</code> عوديًا (recursively) عن أسماء الثوابت إذا تم توفير اسم صتف مربوط (namespaced class name). مثلا: | ||
<syntaxhighlight lang="ruby"> | |||
module Foo; class Bar; end end | |||
Object.const_get 'Foo::Bar' | |||
</syntaxhighlight>تُحترم الراية <code>inherit</code> عند كل بحث. مثلا:<syntaxhighlight lang="ruby"> | |||
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 | |||
</syntaxhighlight>إن لم يكن الوسيط اسم ثابت صالح، فسيُطلق الخطأ <code>NameError</code> مع التحذير "wrong constant name".<syntaxhighlight lang="ruby"> | |||
Object.const_get 'foobar' #=> NameError: wrong constant name foobar | |||
</syntaxhighlight> | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">const_get(sym, inherit=true) → obj | <syntaxhighlight lang="ruby">const_get(sym, inherit=true) → obj | ||
سطر 16: | سطر 34: | ||
==المعاملات== | ==المعاملات== | ||
===<code>sym</code>=== | ===<code>sym</code>=== | ||
رمز يمثل الثابتة. | |||
===<code>inherit</code>=== | ===<code>inherit</code>=== | ||
يحدد ما إذا كان البحث عوديًا (recursively). | |||
===<code>str</code>=== | ===<code>str</code>=== | ||
سلسلة نصية تمثل الثابتة. | |||
==القيمة المُعادة== | ==القيمة المُعادة== | ||
تُعاد قيمة الثابت إذا عُثر على تعريف له، | |||
==أمثلة== | ==أمثلة== | ||
سطر 28: | سطر 49: | ||
<syntaxhighlight lang="ruby">Math.const_get(:PI) #=> 3.14159265358979</syntaxhighlight> | <syntaxhighlight lang="ruby">Math.const_get(:PI) #=> 3.14159265358979</syntaxhighlight> | ||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Module/const_defined-3F|const_defined?]]</code>: يتحقق مما إذا كانت للوحدة أو أحد أسلافها (ancestors) ثابت بالاسم المعطى | * التابع <code>[[Ruby/Module/const_defined-3F|const_defined?]]</code>: يتحقق مما إذا كانت للوحدة أو أحد أسلافها (ancestors) ثابت بالاسم المعطى | ||
* التابع <code>[[Ruby/Module/const_missing|const_missing]]</code>: يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة. | * التابع <code>[[Ruby/Module/const_missing|const_missing]]</code>: يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-const_get قسم التابع const_get في الصنف Module في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/Module.html#method-i-const_get قسم التابع const_get في الصنف Module في توثيق روبي الرسمي.] |
مراجعة 22:30، 26 أكتوبر 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
: يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة.