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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(مراجعة وتدقيق.)
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Struct</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:الصنف <code>Struct</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 +
[[تصنيف: Ruby Class]]
 
[[تصنيف: Ruby Struct]]
 
[[تصنيف: Ruby Struct]]
 +
يُعدُّ استخدام الصنف <code>Struct</code> طريقةً ملائمةً لتجميع مجموعة من الخاصيات (attributes) معًا، باستخدام مداخل (accessor methods) دون الحاجة إلى كتابة صنف جديد.
  
يُعد استخدام الصنف <code>Struct</code> طريقة ملائمة لتجميع مجموعة من الخاصيات (attributes) معًا، باستخدام مداخل (accessor methods) دون الحاجة إلى كتابة صنف جديد.
+
يُنشئ الصنف <code>Struct</code> أصنافًا فرعيةً (subclasses) جديدةً تحمل مجموعة من الأعضاء مقرونة بقيمها. لكل عضو يتم إنشاء قارئ (reader method) وكاتب (writer method) مشابهين للتابع <code>[[Ruby/Module/attr_accessor|Module.attr_accessor]]</code>.
 
 
يُنشئ الصنف <code>Struct</code> أصنافًا فرعية (subclasses) جديدة تحمل مجموعة من الأعضاء مقرونة بقيمها. لكل عضو يتم إنشاء قارئ (method reader) وكاتب (writer method) مشابهين للتابع <code>[[Ruby/Module/attr_accessor|Module#attr_accessor]]</code>.
 
 
<syntaxhighlight lang="ruby">Customer = Struct.new(:name, :address) do
 
<syntaxhighlight lang="ruby">Customer = Struct.new(:name, :address) do
 
   def greeting
 
   def greeting
سطر 16: سطر 16:
 
راجع صفحة التابع <code>[[Ruby/Struct/new|new]]</code> للحصول على مزيد من الأمثلة حول إنشاء نسخ (instances) وأصناف فرعية للصنف <code>Struct</code>.
 
راجع صفحة التابع <code>[[Ruby/Struct/new|new]]</code> للحصول على مزيد من الأمثلة حول إنشاء نسخ (instances) وأصناف فرعية للصنف <code>Struct</code>.
  
في صفحات التوابع، يشير الوسيط "<code>member</code>" إلى عضو من اعضاء البنية، و الذي يكون إما سلسلة نصية مقتبسة (<code>"name"</code>)، أو [[Ruby/Symbol|رمزًا]] (‎<code>:name</code>).
+
في صفحات التوابع، يشير الوسيط "<code>member</code>" إلى عضو من اعضاء البنية، والذي يكون إما سلسلةً نصيةً مقتبسةً (<code>"name"</code>)، أو [[Ruby/Symbol|رمزًا]] (‎<code>:name</code>).
 +
 
 +
== الثوابت ==
 +
 
 +
=== <code>Tms</code> ===
  
== توابع الصنف العامة (Public Class Methods) ==
+
== توابع الصنف العامة ==
  
===[[Ruby/Struct/new | التابع new]]===
+
===[[Ruby/Struct/new |<code>new</code>]]===
ينشئ كائن <code>Struct</code> جديد.
+
ينشئ صنفًا فرعيًّا جديدًا أو نسخةً جديدةً من الصنف <code>Struct</code>.
  
== توابع النسخ العامة (Public Instance Methods) ==
+
== توابع النسخة العامة ==
  
===[[Ruby/Struct/equality_operator | التابع ==]]===
+
===[[Ruby/Struct/equality_operator |<code>==</code>]]===
معامل التساوي.
+
يتحقق إن كان لبنية ما نفس الصنف الفرعي ونفس قيم الأعضاء مقارنةً <nowiki/>[[Ruby/Struct|ببنية]] أخرى.
===[[Ruby/Struct/index_operator | التابع []]]===
+
===<code rel="mw:WikiLink" href="Ruby/Struct/index_operator " title="Ruby/Struct/index operator">[[Ruby/Struct/index_operator |[]]]</code>===
معامل الفهرسة.
+
يجلب قيمة عضو البنية المعطى، أو قيمة العضو ذي الفهرس المحدَّد.
===[[Ruby/Struct/index_operator-3D | التابع ‎ []=‎]]===
+
===<code rel="mw:WikiLink" href="Ruby/Struct/index_operator-3D " title="Ruby/Struct/index operator-3D">[[Ruby/Struct/5B-5D-3D|‎ []=‎]]</code>===
معامل التعيين.
+
يضبط عند استدعائه بالشكل <code>struct[member/index] = obj</code> قيمة عضو<nowiki/>[[Ruby/Struct|البنية]] <code>member</code> المعطى أو العضو الموجود عند الفهرس <code>index</code> إلى القيمة <code>obj</code>.
===[[Ruby/Struct/dig | التابع dig]]===
+
===[[Ruby/Struct/dig |<code>dig</code>]]===
يستخلص التابع <code>dig</code> القيمة المتشعبة (nested) المحددة بواسطة تسلسل الكائنات <code>key</code>عن طريق استدعاء <code>dig</code> في كل خطوة،
+
يستخلص القيمة المتشعبة (nested) المحددة بواسطة تسلسل الكائنات المعطاة عن طريق استدعاء <code>dig</code> في كل خطوة.
===[[Ruby/Struct/each | التابع each]]===
+
===[[Ruby/Struct/each |<code>each</code>]]===
يعيد التابع <code>each</code> قيمة كل عضو من أعضاء ال[[Ruby/Struct|بنية]] بالترتيب.   
+
يعيد قيمة كل عضو من أعضاء البنية بالترتيب.   
===[[Ruby/Struct/each_pair | التابع each_pair]]===
+
===[[Ruby/Struct/each_pair |<code>each_pair</code>]]===
يعيد التابع <code>each_pair</code> اسم وقيمة كل عضو من أعضاء ال[[Ruby/Struct|بنية]] بالترتيب.   
+
يعيد اسم وقيمة كل عضو من أعضاء البنية بالترتيب.   
===[[Ruby/Struct/eql-3F | التابع eql?‎]]===
+
===[[Ruby/Struct/eql-3F |<code>eql?‎</code>]]===
معامل التساوي القاموسي (<code>[[Ruby/Hash|Hash]]</code>)
+
يتحقق التابع <code>eql?‎</code> إن كانت بنيتان تشيران إلى نفس مفتاح الجدول <code>[[Ruby/Hash|Hash]]</code> أي إذا كان لهما نفس صنف <nowiki/>[[Ruby/Struct|البنية]] الفرعي، وكانت قيم أعضائهما متساوية.
===[[Ruby/Struct/hash | التابع hash]]===
+
===[[Ruby/Struct/hash |<code>hash</code>]]===
يعيد التابع <code>hash</code> قيمة تجزئة (hash value) استنادًا إلى محتويات هذه ال[[Ruby/Struct|بنية]].
+
يعيد القيمة hash استنادًا إلى محتويات هذه البنية.
===[[Ruby/Struct/inspect | التابع inspect]]===
+
===[[Ruby/Struct/inspect |<code>inspect</code>]]===
يعيد التابع <code>inspect</code> [[Ruby/String|سلسلة نصية]] تحتوي وصفًا لهذه ال[[Ruby/Struct|بنية]].
+
يعيد [[Ruby/String|سلسلة نصية]] تحتوي وصفًا لهذه البنية.
===[[Ruby/Struct/length | التابع length]]===
+
===[[Ruby/Struct/length |<code>length</code>]]===
يُعيد عدد أعضاء ال[[Ruby/Struct|بنية]].
+
يُعيد عدد أعضاء البنية.
===[[Ruby/Struct/members | التابع members]]===
+
===[[Ruby/Struct/members |<code>members</code>]]===
يُعيد أعضاء ال[[Ruby/Struct|بنية]] على هيئة [[Ruby/Array|مصفوفة]] من الرموز:
+
يُعيد أعضاء البنية على هيئة [[Ruby/Array|مصفوفة]] من الرموز.
===[[Ruby/Struct/select | التابع select]]===
+
===[[Ruby/Struct/select |<code>select</code>]]===
يمرر التابع <code>select</code> قيم كل أعضاء ال[[Ruby/Struct|بنية]] إلى الكتلة ويعيد [[Ruby/Array|مصفوفة]] تحتوي قيم الأعضاء ال[[Ruby/Struct|بنية]] من <code>struct</code> التي تعيد عند تمريرها إلى الكتلة المعطاة القيمة <code>true</code> (تكافئ <code>[[Ruby/Enumerable/select|Enumerable#select]]</code>).
+
يمرر قيم كل أعضاء البنية إلى الكتلة المعطاة ويعيد <nowiki/>[[Ruby/Array|مصفوفة]] تحتوي قيم الأعضاء التي أعادت الكتلة معها القيمة <code>true</code>.
===[[Ruby/Struct/size | التابع size]]===
+
===[[Ruby/Struct/size |<code>size</code>]]===
يُعيد التابع <code>size</code> عدد أعضاء ال[[Ruby/Struct|بنية]].
+
يُعيد عدد أعضاء البنية التي استُدعي معها.
===[[Ruby/Struct/to_a | التابع to_a]]===
+
===[[Ruby/Struct/to_a |<code>to_a</code>]]===
يعيد التابع <code>to_a</code> قيم هذه ال[[Ruby/Struct|بنية]] على هيئة [[Ruby/Array|مصفوفة]] <code>[[Ruby/Array|Array]]</code>.
+
يعيد قيم هذه البنية على هيئة <nowiki/>[[Ruby/Array|مصفوفة]].
===[[Ruby/Struct/to_h | التابع to_h]]===
+
===[[Ruby/Struct/to_h |<code>to_h</code>]]===
يُعيد التابع <code>to_h</code> [[Ruby/Hash|قاموسا]] يحتوي أسماء وقيم أعضاء ال[[Ruby/Struct|بنية]].
+
يُعيد [[Ruby/Hash|جدول Hash]] يحوي أسماء وقيم أعضاء البنية.
===[[Ruby/Struct/to_s | التابع to_s]]===
+
===[[Ruby/Struct/to_s |<code>to_s</code>]]===
يعيد [[Ruby/String|سلسلة نصية]] تحتوي وصفًا لهذه ال[[Ruby/Struct|بنية]].
+
يعيد [[Ruby/String|سلسلة نصية]] تحتوي وصفًا لهذه البنية.
  
===[[Ruby/Struct/values | التابع values]]===
+
===[[Ruby/Struct/values |<code>values</code>]]===
يعيد التابع <code>values</code> قيم هذه ال[[Ruby/Struct|بنية]] على هيئة [[Ruby/Array|مصفوفة]].
+
يعيد قيم هذه البنية على هيئة [[Ruby/Array|مصفوفة]].
===[[Ruby/Struct/values_at | التابع values_at]]===
+
===[[Ruby/Struct/values_at |<code>values_at</code>]]===
يُعيد التابع <code>values_at</code> قيم أعضاء ال[[Ruby/Struct|بنية]] لكل وسيط <code>selector</code> على هيئة [[Ruby/Array|مصفوفة]].   
+
يُعيد قيم أعضاء البنية المقابلة لكل معامل مُمرَّر إليه على هيئة <nowiki/>[[Ruby/Array|مصفوفة]].   
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Struct.html قسم  الصنف Struct في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Struct.html صفحة الصنف Struct في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 08:09، 5 ديسمبر 2018

يُعدُّ استخدام الصنف Struct طريقةً ملائمةً لتجميع مجموعة من الخاصيات (attributes) معًا، باستخدام مداخل (accessor methods) دون الحاجة إلى كتابة صنف جديد.

يُنشئ الصنف Struct أصنافًا فرعيةً (subclasses) جديدةً تحمل مجموعة من الأعضاء مقرونة بقيمها. لكل عضو يتم إنشاء قارئ (reader method) وكاتب (writer method) مشابهين للتابع Module.attr_accessor.

Customer = Struct.new(:name, :address) do
  def greeting
    "Hello #{name}!"
  end
end
dave = Customer.new("Dave", "123 Main")
dave.name     #=> "Dave"
dave.greeting #=> "Hello Dave!"‎

راجع صفحة التابع new للحصول على مزيد من الأمثلة حول إنشاء نسخ (instances) وأصناف فرعية للصنف Struct.

في صفحات التوابع، يشير الوسيط "member" إلى عضو من اعضاء البنية، والذي يكون إما سلسلةً نصيةً مقتبسةً ("name")، أو رمزًا (‎:name).

الثوابت

Tms

توابع الصنف العامة

new

ينشئ صنفًا فرعيًّا جديدًا أو نسخةً جديدةً من الصنف Struct.

توابع النسخة العامة

==

يتحقق إن كان لبنية ما نفس الصنف الفرعي ونفس قيم الأعضاء مقارنةً ببنية أخرى.

[]

يجلب قيمة عضو البنية المعطى، أو قيمة العضو ذي الفهرس المحدَّد.

‎ []=‎

يضبط عند استدعائه بالشكل struct[member/index] = obj قيمة عضوالبنية member المعطى أو العضو الموجود عند الفهرس index إلى القيمة obj.

dig

يستخلص القيمة المتشعبة (nested) المحددة بواسطة تسلسل الكائنات المعطاة عن طريق استدعاء dig في كل خطوة.

each

يعيد قيمة كل عضو من أعضاء البنية بالترتيب.

each_pair

يعيد اسم وقيمة كل عضو من أعضاء البنية بالترتيب.

eql?‎

يتحقق التابع eql?‎ إن كانت بنيتان تشيران إلى نفس مفتاح الجدول Hash أي إذا كان لهما نفس صنف البنية الفرعي، وكانت قيم أعضائهما متساوية.

hash

يعيد القيمة hash استنادًا إلى محتويات هذه البنية.

inspect

يعيد سلسلة نصية تحتوي وصفًا لهذه البنية.

length

يُعيد عدد أعضاء البنية.

members

يُعيد أعضاء البنية على هيئة مصفوفة من الرموز.

select

يمرر قيم كل أعضاء البنية إلى الكتلة المعطاة ويعيد مصفوفة تحتوي قيم الأعضاء التي أعادت الكتلة معها القيمة true.

size

يُعيد عدد أعضاء البنية التي استُدعي معها.

to_a

يعيد قيم هذه البنية على هيئة مصفوفة.

to_h

يُعيد جدول Hash يحوي أسماء وقيم أعضاء البنية.

to_s

يعيد سلسلة نصية تحتوي وصفًا لهذه البنية.

values

يعيد قيم هذه البنية على هيئة مصفوفة.

values_at

يُعيد قيم أعضاء البنية المقابلة لكل معامل مُمرَّر إليه على هيئة مصفوفة.

مصادر