الفرق بين المراجعتين لصفحة: «Ruby/Module/const get»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>const_get</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تص...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code>const_get | <noinclude>{{DISPLAYTITLE: التابع <code>Module.const_get</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Module]] | [[تصنيف: Ruby Module Class]] | ||
يتحقق التابع <code>const_get</code> من وجود ثابت | يتحقق التابع <code>const_get</code> من وجود ثابت باسم محدد في الوحدة التي استُدعي معها. في حال تعيين المعامل <code>inherit</code>، فسيشمل البحث الأسلاف أيضًا (وكذلك <code>[[Ruby/Object|Object]]</code> إن كانت الوحدة من النوع <code>[[Ruby/Module|Module]]</code>). | ||
تُعاد قيمة الثابت إذا عُثر على تعريف له؛ خلا ذلك، سيُطلق الخطأ <code>[[Ruby/NameError|NameError]]</code>.<syntaxhighlight lang="ruby"> | |||
Math.const_get(:PI) #=> 3.14159265358979 | |||
</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>[[Ruby/NameError|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: | سطر 31: | ||
==المعاملات== | ==المعاملات== | ||
===<code>sym</code>=== | ===<code>sym</code>=== | ||
[[Ruby/Symbol|رمز]] يمثل الثابتة. | |||
===<code>inherit</code>=== | ===<code>inherit</code>=== | ||
يحدد ما إذا كان يراد إجراء البحث بشكل تكراري (recursively). | |||
===<code>str</code>=== | ===<code>str</code>=== | ||
[[Ruby/String|سلسلة نصية]] تمثل الثابتة. | |||
==القيمة المعادة== | |||
==القيمة | تُعاد قيمة الثابت إذا عُثر على تعريف له. | ||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع <code>const_get</code>: | مثال على استخدام التابع <code>const_get</code>:<syntaxhighlight lang="ruby">Math.const_get(:PI) #=> 3.14159265358979</syntaxhighlight> | ||
<syntaxhighlight lang="ruby">Math.const_get(:PI) #=> 3.14159265358979</syntaxhighlight> | |||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Module/ | *التابع <code>[[Ruby/Module/const defined-3F|const_defined?]]</code>: يتحقق مما إذا كانت للوحدة أو أحد أسلافها (ancestors) ثابت بالاسم المعطى. | ||
* التابع <code>[[Ruby/Module/ | *التابع <code>[[Ruby/Module/const missing|const_missing]]</code>: يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-const_get قسم | *[http://ruby-doc.org/core-2.5.1/Module.html#method-i-const_get قسم التابع const_get في الصنف 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
: يُستدعى عند محاولة استخدام ثابت غير معرف في الوحدة.