الفرق بين المراجعتين لصفحة: «Ruby/Module/const defined-3F»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>const_defined?</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Rub...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Module]] | [[تصنيف: Ruby Module]] | ||
يتحقق التابع <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>Object</code> وكذلك أسلافه.<syntaxhighlight lang="ruby"> | |||
Math.const_defined?(:String) #=> true, found in Object | |||
إذا | </syntaxhighlight>في كل الأصناف أو الوحدات المفحوصة، إذا لم يكن الثابت موجودًا وكان هناك تحميل تلقائي (autoload) له، فسيتم إعادة <code>true</code> مباشرة دون تحميل تلقائي (autoloading):<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>في هذه الحالة، سينطبق نفس منطق التحميل الذاتي (autoloading). | |||
إذا | إذا كان الوسيط المعطى اسم ثابت غير صالح، فسيُطلق الخطأ <code>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: | سطر 32: | ||
==المعاملات== | ==المعاملات== | ||
===<code>sym</code>=== | ===<code>sym</code>=== | ||
رمز يمثل الثابتة. | |||
===<code>inherit</code>=== | ===<code>inherit</code>=== | ||
إن أُعطي القيمة <code>false</code>، سينحصر البحث عن الثوابت في المستقبِل (receiver): | |||
===<code>str</code>=== | ===<code>str</code>=== | ||
سلسلة نصية تمثل الثابتة. | |||
==القيمة المُعادة== | ==القيمة المُعادة== | ||
يعيد التابع <code>const_defined?</code> القيمة <code>true</code> إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى. | |||
==أمثلة== | ==أمثلة== | ||
سطر 33: | سطر 49: | ||
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 في توثيق روبي الرسمي.] |
مراجعة 22:24، 26 أكتوبر 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
مباشرة دون تحميل تلقائي (autoloading):
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
في هذه الحالة، سينطبق نفس منطق التحميل الذاتي (autoloading).
إذا كان الوسيط المعطى اسم ثابت غير صالح، فسيُطلق الخطأ 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
سلسلة نصية تمثل الثابتة.
القيمة المُعادة
يعيد التابع const_defined?
القيمة true
إذا كانت الوحدة التي استُدعي معها أو أحد أسلافها (ancestors) تحتوي الثابت المعطى.
أمثلة
مثال على استخدام التابع 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
: يتحقق من وجود ثابت بالاسم المحدد في الوحدة .