الفرق بين المراجعتين لصفحة: «Ruby/Class/ new»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>new</code> في الصنف <code>Class</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby ARGF]] | [[تصنيف: Ruby ARGF]] | ||
يُنشئ التابع | يُنشئ التابع <code>new</code> صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب ( <code>superclass</code>) الممرر إليه (أو من الصنف <code>Object</code> إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف[(class object) وإعطائه قيمة ثابتة. | ||
إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف ( | |||
إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (class object)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع <code>class_eval</code>. | |||
عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي. | عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي. | ||
==البنية العامة== | ==البنية العامة== | ||
سطر 13: | سطر 15: | ||
يعاد صنف. | يعاد صنف. | ||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع | مثال على استخدام التابع <code>new</code>: | ||
<syntaxhighlight lang="ruby"> fred = Class.new do | <syntaxhighlight lang="ruby"> fred = Class.new do | ||
def meth1 | def meth1 | ||
سطر 32: | سطر 34: | ||
* التابع [[Ruby/Class/inherited | <code>inherited</code>]]: يُستدعَى كرد نداء في كل مرة يُنشأ فيها صنف فرعي (<code>subclass</code>) من الصنف الحالي. | * التابع [[Ruby/Class/inherited | <code>inherited</code>]]: يُستدعَى كرد نداء في كل مرة يُنشأ فيها صنف فرعي (<code>subclass</code>) من الصنف الحالي. | ||
* التابع [[Ruby/Class/new | <code>new</code>]]: يستدعي التابعَ [[Ruby/Class/allocate | <code>allocate</code>]] لإنشاء كائن جديد من الصنف <code>class</code>، ثم يستدعي التابع <code>initialize</code> مع ذلك الكائن المنشأ ويُمرِّر إليه وسائط محددة. | * التابع [[Ruby/Class/new | <code>new</code>]]: يستدعي التابعَ [[Ruby/Class/allocate | <code>allocate</code>]] لإنشاء كائن جديد من الصنف <code>class</code>، ثم يستدعي التابع <code>initialize</code> مع ذلك الكائن المنشأ ويُمرِّر إليه وسائط محددة. | ||
* التابع [[Ruby/Class/superclass | <code>superclass</code>]]: يعيد الصنف الأب ( | * التابع [[Ruby/Class/superclass | <code>superclass</code>]]: يعيد الصنف الأب ( <code>superclass</code>) للصنف المستدعى معه. | ||
==مصادر== | ==مصادر== | ||
* قسم التابع new في الصنف Class في توثيق روبي الرسمي. | * [http://ruby-doc.org/core-2.5.1/Class.html#method-c-new قسم التابع new في الصنف Class في توثيق روبي الرسمي.] | ||
مراجعة 14:16، 12 سبتمبر 2018
يُنشئ التابع new
صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب ( superclass
) الممرر إليه (أو من الصنف Object
إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف[(class object) وإعطائه قيمة ثابتة.
إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (class object)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع class_eval
.
عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي.
البنية العامة
new(super_class=Object) → a_class
new(super_class=Object) { |mod| ... } → a_class
القيم المعادة
يعاد صنف.
أمثلة
مثال على استخدام التابع new
:
fred = Class.new do
def meth1
"hello"
end
def meth2
"bye"
end
end
a = fred.new #=> #<#<Class:0x100381890>:0x100376b98>
a.meth1 #=> "hello"
a.meth2 #=> "bye"
انظر أيضًا
- التابع
allocate
: يحجز مساحةً من الذاكرة لكائن جديد من الصنفclass
دون استدعاء التابعinitialize
مع النسخة (instance
) الجديدة. - التابع
inherited
: يُستدعَى كرد نداء في كل مرة يُنشأ فيها صنف فرعي (subclass
) من الصنف الحالي. - التابع
new
: يستدعي التابعَallocate
لإنشاء كائن جديد من الصنفclass
، ثم يستدعي التابعinitialize
مع ذلك الكائن المنشأ ويُمرِّر إليه وسائط محددة. - التابع
superclass
: يعيد الصنف الأب (superclass
) للصنف المستدعى معه.