الفرق بين المراجعتين ل"Ruby/Module/const defined-3F"

من موسوعة حسوب
< Ruby‏ | Module
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق.)
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>‎const_defined?‎‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>‎Module.const_defined?‎‎</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Module]]
+
[[تصنيف: Ruby Module Class]]
يتحقق التابع <code>const_defined?‎</code> مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.<syntaxhighlight lang="ruby">
+
يتحقق التابع <code>const_defined?‎</code> مما إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحوي الثابت المعطى.<syntaxhighlight lang="ruby">
 
Float.const_defined?(:EPSILON)      #=> true, found in Float itself
 
Float.const_defined?(:EPSILON)      #=> true, found in Float itself
 
Float.const_defined?("String")      #=> true, found in Object (ancestor)
 
Float.const_defined?("String")      #=> true, found in Object (ancestor)
 
BasicObject.const_defined?(:Hash)  #=> false
 
BasicObject.const_defined?(:Hash)  #=> false
</syntaxhighlight>إذا كانت الوحدة من النوع <code>[[Ruby/Module|Module]]</code>، فسيتم فضلا عن ذلك فحص <code>Object</code> وكذلك أسلافه.<syntaxhighlight lang="ruby">
+
</syntaxhighlight>إذا كانت الوحدة من النوع <code>[[Ruby/Module|Module]]</code>، فسيتم إضافة إلى ذلك فحص <code>[[Ruby/Object|Object]]</code> وكذلك أسلافه.<syntaxhighlight lang="ruby">
 
Math.const_defined?(:String)  #=> true, found in Object
 
Math.const_defined?(:String)  #=> true, found in Object
  
</syntaxhighlight>في كل الأصناف أو الوحدات المفحوصة، إذا لم يكن الثابت موجودًا وكان هناك تحميل تلقائي (autoload) له، فسيتم إعادة <code>true</code> مباشرة دون تحميل تلقائي (autoloading):<syntaxhighlight lang="ruby">
+
</syntaxhighlight>في كل الأصناف أو الوحدات المفحوصة، إذا لم يكن الثابت موجودًا وكان [[Ruby/Module/autoload|التحميل التلقائي]] (autoload) مفعلًا له، فسيتم إعادة القيمة <code>true</code> مباشرةً دون [[Ruby/Module/autoload|تحميل تلقائي]]:<syntaxhighlight lang="ruby">
 
module Admin
 
module Admin
 
   autoload :User, 'admin/user'
 
   autoload :User, 'admin/user'
 
end
 
end
 
Admin.const_defined?(:User)  #=> true
 
Admin.const_defined?(:User)  #=> true
</syntaxhighlight>إذا لم يتم العثور على الثابتة فلن يُستدعى التابع <code>const_missing</code>، وسيعيد التابع <code>const_defined?‎</code>  القيمة <code>false</code>.
+
</syntaxhighlight>إذا لم يتم العثور على الثابت، فلن يُستدعى التابع <code>const_missing</code>، وسيعيد التابع <code>const_defined?‎</code>  القيمة <code>false</code>.
  
إن أُعطي الوسيط <code>inherit</code> القيمة <code>false</code>، سينحصر البحث عن الثوابت في المستقبِل (receiver):<syntaxhighlight lang="ruby">
+
إن أُعطي المعامل <code>inherit</code> القيمة <code>false</code>، فسينحصر البحث عن الثوابت في المستقبِل (receiver):<syntaxhighlight lang="ruby">
 
IO.const_defined?(:SYNC)          #=> true, found in File::Constants (ancestor)
 
IO.const_defined?(:SYNC)          #=> true, found in File::Constants (ancestor)
 
IO.const_defined?(:SYNC, false)  #=> false, not found in IO itself
 
IO.const_defined?(:SYNC, false)  #=> false, not found in IO itself
</syntaxhighlight>في هذه الحالة، سينطبق نفس منطق التحميل الذاتي (autoloading).
+
</syntaxhighlight>في هذه الحالة، سيُطبَّق نفس منطق [[Ruby/Module/autoload|التحميل التلقائي]].
  
إذا كان الوسيط المعطى اسم ثابت غير صالح، فسيُطلق الخطأ <code>NameError</code> مع الرسالة "wrong constant name name":<syntaxhighlight lang="ruby">
+
إذا كان المعامل المعطى اسم ثابت غير صالح، فسيُطلق الخطأ <code>[[Ruby/NameError|NameError]]</code> مع الرسالة "wrong constant name name":<syntaxhighlight lang="ruby">
 
Hash.const_defined? 'foobar'  #=> NameError: wrong constant name foobar
 
Hash.const_defined? 'foobar'  #=> NameError: wrong constant name foobar
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">const_defined?(sym, inherit=true)→ true or false
 
<syntaxhighlight lang="ruby">const_defined?(sym, inherit=true)→ true or false
سطر 32: سطر 31:
 
==المعاملات==
 
==المعاملات==
 
===<code>sym‎</code>===
 
===<code>sym‎</code>===
رمز يمثل الثابتة.
+
[[Ruby/Symbol|رمز]] يمثل الثابت.
 
 
 
===<code>inherit‎</code>===
 
===<code>inherit‎</code>===
إن أُعطي  القيمة <code>false</code>، سينحصر البحث عن الثوابت في المستقبِل (receiver):
+
إن كانت قيمته <code>false</code>، فسينحصر البحث عن الثوابت في المستقبِل (receiver).
 
 
 
===<code>str‎</code>===
 
===<code>str‎</code>===
سلسلة نصية تمثل الثابتة.
+
[[Ruby/String|سلسلة نصية]] تمثل الثابت.
 
+
==القيمة المعادة==
==القيمة المُعادة==
+
تعاد القيمة <code>true</code> إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحوي الثابت <code>sym</code> أو <code>str</code> المعطى.
يعيد التابع <code>const_defined?‎</code> القيمة <code>true</code> إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.
 
 
 
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>const_defined?‎</code>:
+
مثال على استخدام التابع <code>const_defined?‎</code>:<syntaxhighlight lang="ruby">Float.const_defined?(:EPSILON)      #=> true, found in Float itself
<syntaxhighlight lang="ruby">Float.const_defined?(:EPSILON)      #=> true, found in Float itself
 
 
Float.const_defined?("String")      #=> true, found in Object (ancestor)
 
Float.const_defined?("String")      #=> true, found in Object (ancestor)
 
BasicObject.const_defined?(:Hash)  #=> false‎</syntaxhighlight>
 
BasicObject.const_defined?(:Hash)  #=> false‎</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Module/class_variables|class_variables]]</code>: يعيد  مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة.
+
*التابع <code>[[Ruby/Module/class variables|class_variables]]</code>: يعيد  مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة.
* التابع <code>[[Ruby/Module/const_get|const_get]]</code>: يتحقق  من وجود ثابت بالاسم المحدد في الوحدة .  
+
*التابع <code>[[Ruby/Module/const get|const_get]]</code>: يتحقق  من وجود ثابت بالاسم المحدد في الوحدة.
 
 
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-const_defined-3F قسم التابع const_defined?‎ في الصنف Module‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-const_defined-3F قسم التابع const_defined?‎ في الصنف Module‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 11:50، 19 نوفمبر 2018

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

Float.const_defined?(:EPSILON)      #=> true, found in Float itself
Float.const_defined?("String")      #=> true, found in Object (ancestor)
BasicObject.const_defined?(:Hash)   #=> false

إذا كانت الوحدة من النوع Module، فسيتم إضافة إلى ذلك فحص Object وكذلك أسلافه.

Math.const_defined?(:String)   #=> true, found in Object

في كل الأصناف أو الوحدات المفحوصة، إذا لم يكن الثابت موجودًا وكان التحميل التلقائي (autoload) مفعلًا له، فسيتم إعادة القيمة true مباشرةً دون تحميل تلقائي:

module Admin
  autoload :User, 'admin/user'
end
Admin.const_defined?(:User)   #=> true

إذا لم يتم العثور على الثابت، فلن يُستدعى التابع const_missing، وسيعيد التابع const_defined?‎ القيمة false. إن أُعطي المعامل inherit القيمة false، فسينحصر البحث عن الثوابت في المستقبِل (receiver):

IO.const_defined?(:SYNC)          #=> true, found in File::Constants (ancestor)
IO.const_defined?(:SYNC, false)   #=> false, not found in IO itself

في هذه الحالة، سيُطبَّق نفس منطق التحميل التلقائي. إذا كان المعامل المعطى اسم ثابت غير صالح، فسيُطلق الخطأ NameError مع الرسالة "wrong constant name name":

Hash.const_defined? 'foobar'   #=> NameError: wrong constant name foobar

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

const_defined?(sym, inherit=true) true or false
const_defined?(str, inherit=true) true or false

المعاملات

sym‎

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

inherit‎

إن كانت قيمته false، فسينحصر البحث عن الثوابت في المستقبِل (receiver).

str‎

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

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

تعاد القيمة true إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحوي الثابت sym أو str المعطى.

أمثلة

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

Float.const_defined?(:EPSILON)      #=> true, found in Float itself
Float.const_defined?("String")      #=> true, found in Object (ancestor)
BasicObject.const_defined?(:Hash)   #=> false‎

انظر أيضا

  • التابع class_variables: يعيد مصفوفة مكونة من أسماء متغيرات الصنف في الوحدة.
  • التابع const_get: يتحقق من وجود ثابت بالاسم المحدد في الوحدة.

مصادر