الفرق بين المراجعتين لصفحة: «Ruby/Class/ new»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Class]] | [[تصنيف: Ruby Class]] | ||
يُنشئ التابع | يُنشئ التابع <code>new</code> صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب ( superclass) المُمرَّر إليه (أو من الصنف <code>Object</code> إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف (class object) وإعطائه قيمة ثابتة. | ||
إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (class object)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع <code>class_eval</code>. | إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (class object)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع <code>class_eval</code>. | ||
سطر 9: | سطر 9: | ||
عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي. | عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby"> new(super_class=Object) → a_class | <syntaxhighlight lang="ruby">new(super_class=Object) → a_class | ||
new(super_class=Object) { |mod| ... } → a_class | new(super_class=Object) { |mod| ... } → a_class | ||
</syntaxhighlight> | </syntaxhighlight> | ||
سطر 15: | سطر 15: | ||
يعاد صنف. | يعاد صنف. | ||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع | مثال على استخدام التابع <code>new</code>: | ||
<syntaxhighlight lang="ruby"> fred = Class.new do | <syntaxhighlight lang="ruby">fred = Class.new do | ||
def meth1 | def meth1 | ||
"hello" | "hello" | ||
سطر 31: | سطر 31: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
* التابع [[Ruby/Class/allocate | <code>allocate</code>]]: يحجز مساحةً من الذاكرة لكائن جديد من الصنف <code>class</code> دون استدعاء التابع <code>initialize</code> مع النسخة ( | * التابع<nowiki/>[[Ruby/Class/allocate | <code>allocate</code>]]: يحجز مساحةً من الذاكرة لكائن جديد من الصنف <code>class</code> دون استدعاء التابع <code>initialize</code> مع النسخة (instance) الجديدة. | ||
* التابع [[Ruby/Class/inherited | <code>inherited</code>]]: يُستدعَى كرد نداء في كل مرة يُنشأ فيها صنف فرعي ( | * التابع<nowiki/>[[Ruby/Class/inherited | <code>inherited</code>]]: يُستدعَى كرد نداء في كل مرة يُنشأ فيها صنف فرعي (subclass) من الصنف الحالي. | ||
* التابع [[Ruby/Class/new | <code>new</code>]]: يستدعي التابعَ [[Ruby/Class/allocate | <code>allocate</code>]] لإنشاء كائن جديد من الصنف <code>class</code>، ثم يستدعي التابع <code>initialize</code> مع ذلك الكائن المنشأ ويُمرِّر إليه وسائط محددة. | * التابع<nowiki/>[[Ruby/Class/new | <code>new</code>]]: يستدعي التابعَ<nowiki/>[[Ruby/Class/allocate | <code>allocate</code>]] لإنشاء كائن جديد من الصنف <code>class</code>، ثم يستدعي التابع <code>initialize</code> مع ذلك الكائن المنشأ ويُمرِّر إليه وسائط محددة. | ||
* التابع [[Ruby/Class/superclass | <code>superclass</code>]]: يعيد الصنف الأب ( | * التابع<nowiki/>[[Ruby/Class/superclass | <code>superclass</code>]]: يعيد الصنف الأب (superclass) للصنف المستدعى معه. | ||
==مصادر== | ==مصادر== | ||
* [http://ruby-doc.org/core-2.5.1/Class.html#method-c-new قسم التابع new في الصنف Class في توثيق روبي الرسمي.] | * [http://ruby-doc.org/core-2.5.1/Class.html#method-c-new قسم التابع new في الصنف Class في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 08:50، 4 أكتوبر 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) للصنف المستدعى معه.