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