الفرق بين المراجعتين لصفحة: «Ruby/Class/ new»

من موسوعة حسوب
< Ruby‏ | Class
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Class]]
[[تصنيف: Ruby Class]]
يُنشئ التابع <code>new</code> صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب ( <code>superclass</code>) الممرر إليه (أو من الصنف <code>Object</code> إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف[(class object) وإعطائه قيمة ثابتة.
يُنشئ التابع <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>:
مثال على استخدام  التابع <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> مع النسخة (<code>instance</code>) الجديدة.
* التابع<nowiki/>[[Ruby/Class/allocate | <code>allocate</code>]]: يحجز مساحةً من الذاكرة لكائن جديد من الصنف <code>class</code> دون استدعاء التابع <code>initialize</code> مع النسخة (instance) الجديدة.
* التابع [[Ruby/Class/inherited | <code>inherited</code>]]: يُستدعَى كرد نداء في كل مرة يُنشأ فيها صنف فرعي (<code>subclass</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>]]: يعيد الصنف الأب ( <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) للصنف المستدعى معه.

مصادر