الفرق بين المراجعتين ل"Ruby/Class/ new"

من موسوعة حسوب
< Ruby‏ | Class
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>new</code> في الصنف <code>Class</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method...')
 
ط (مراجعة وتدقيق.)
 
(مراجعتان متوسطتان بواسطة مستخدم واحد آخر غير معروضتين)
سطر 2: سطر 2:
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby ARGF]]
+
[[تصنيف: Ruby Class]]
يُنشئ التابع [[Ruby/Class/new | <code>new</code>]] صنفًا جديدًا مجهولًا غير مسمى (<code>unnamed</code>) من الصنف الأب ([[Ruby/Class/superclass | <code>superclass</code>]]) الممرر إليه (أو من الصنف <code>Object</code> إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف[<code>a</code>][<code>b</code>] (<code>class</code> <code>object</code>) وإعطائه قيمة ثابتة.
+
يُنشئ التابع <code>new</code> صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب ( superclass) المُمرَّر إليه (أو من الصنف <code>Object</code> إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف (class object) وإعطائه قيمة ثابتة.
إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (<code>class</code> <code>object</code>)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع <code>class_eval</code>.
+
 
 +
إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (class object)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع <code>class_eval</code>.
 +
 
 
عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي.
 
عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي.
 
==البنية العامة==
 
==البنية العامة==
<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>
سطر 13: سطر 15:
 
يعاد صنف.
 
يعاد صنف.
 
==أمثلة==
 
==أمثلة==
مثال على استخدام  التابع [[Ruby/Class/new | <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"
سطر 29: سطر 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>]]: يعيد الصنف الأب ([[Ruby/Class/superclass | <code>superclass</code>]]) للصنف المستدعى معه.
+
* التابع<nowiki/>[[Ruby/Class/superclass | <code>superclass</code>]]: يعيد الصنف الأب (superclass) للصنف المستدعى معه.
 
==مصادر==
 
==مصادر==
* قسم التابع new في الصنف Class في توثيق روبي الرسمي.
+
* [http://ruby-doc.org/core-2.5.1/Class.html#method-c-new قسم التابع new في الصنف Class في توثيق روبي الرسمي.]
[a]أم الكائن class؟
 
[b]جملتك صحيحة. اتركها.
 

المراجعة الحالية بتاريخ 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) للصنف المستدعى معه.

مصادر