الفرق بين المراجعتين لصفحة: «Ruby/Module/const get»

من موسوعة حسوب
< Ruby‏ | Module
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>const_get‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>Module.const_get‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Module]]
[[تصنيف: Ruby Module Class]]
يتحقق التابع <code>const_get</code> من وجود ثابت (بالاسم المحدد) في الوحدة التي استُدعي معها. في حال تعيين الوسيط <code>inherit</code>، فسيشمل البحث الأسلاف أيضًا (وكذلك <code>Object</code> إن كانت الوحدة من النوع <code>Module</code>).
يتحقق التابع <code>const_get</code> من وجود ثابت باسم محدد في الوحدة التي استُدعي معها. في حال تعيين المعامل <code>inherit</code>، فسيشمل البحث الأسلاف أيضًا (وكذلك <code>[[Ruby/Object|Object]]</code> إن كانت الوحدة من النوع <code>[[Ruby/Module|Module]]</code>).


تُعاد قيمة الثابت إذا عُثر على تعريف لتلك الثابتة، خلا ذلك، سيُطلق الخطأ <code>NameError</code>.<syntaxhighlight lang="ruby">
تُعاد قيمة الثابت إذا عُثر على تعريف له؛ خلا ذلك، سيُطلق الخطأ <code>[[Ruby/NameError|NameError]]</code>.<syntaxhighlight lang="ruby">
Math.const_get(:PI)  #=> 3.14159265358979
Math.const_get(:PI)  #=> 3.14159265358979


</syntaxhighlight>سيبحث التابع <code>const_get</code> عوديًا (recursively) عن أسماء الثوابت إذا تم توفير اسم صتف مربوط (namespaced class name). مثلا:
</syntaxhighlight>سيبحث التابع <code>const_get</code> بشكل تكراري (recursively) عن أسماء الثوابت إذا تم توفير اسم صنف من مجال أسماء (namespaced class name). اطلع مثلًا على المثال التالي:<syntaxhighlight lang="ruby">
 
<syntaxhighlight lang="ruby">
module Foo; class Bar; end end
module Foo; class Bar; end end
Object.const_get 'Foo::Bar'
Object.const_get 'Foo::Bar'
</syntaxhighlight>تُحترم الراية <code>inherit</code> عند كل بحث.  مثلا:<syntaxhighlight lang="ruby">
</syntaxhighlight>تؤخذ الراية <code>inherit</code> بالحسبان عند كل عملية بحث:<syntaxhighlight lang="ruby">
module Foo
module Foo
   class Bar
   class Bar
سطر 24: سطر 22:
Object.const_get 'Foo::Baz::VAL'        # => 10
Object.const_get 'Foo::Baz::VAL'        # => 10
Object.const_get 'Foo::Baz::VAL', false  # => NameError
Object.const_get 'Foo::Baz::VAL', false  # => NameError
</syntaxhighlight>إن لم يكن الوسيط اسم ثابت صالح، فسيُطلق الخطأ <code>NameError</code> مع التحذير "wrong constant name".<syntaxhighlight lang="ruby">
</syntaxhighlight>إن لم يكن المعامل اسم ثابت صالح، فسيُطلق الخطأ <code>[[Ruby/NameError|NameError]]</code> مع الرسالة "wrong constant name".<syntaxhighlight lang="ruby">
Object.const_get 'foobar' #=> NameError: wrong constant name foobar
Object.const_get 'foobar' #=> NameError: wrong constant name foobar


</syntaxhighlight>
</syntaxhighlight>
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">const_get(sym, inherit=true) → obj
<syntaxhighlight lang="ruby">const_get(sym, inherit=true) → obj
سطر 34: سطر 31:
==المعاملات==
==المعاملات==
===<code>sym‎</code>===
===<code>sym‎</code>===
رمز يمثل الثابتة.
[[Ruby/Symbol|رمز]] يمثل الثابتة.
 
===<code>inherit‎</code>===
===<code>inherit‎</code>===
يحدد ما إذا كان البحث عوديًا (recursively).
يحدد ما إذا كان يراد إجراء البحث بشكل تكراري (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/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‎ في توثيق روبي الرسمي.]

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

مصادر