الفرق بين المراجعتين لصفحة: «Ruby/Struct»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Struct</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Struct يعد استخدام ا...' |
جميل-بيلوني (نقاش | مساهمات) مراجعة وتدقيق. |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: | <noinclude>{{DISPLAYTITLE:الصنف <code>Struct</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Class]] | |||
[[تصنيف: Ruby Struct]] | [[تصنيف: Ruby Struct]] | ||
يُعدُّ استخدام الصنف <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> أصنافًا | |||
<syntaxhighlight lang="ruby">Customer = Struct.new(:name, :address) do | <syntaxhighlight lang="ruby">Customer = Struct.new(:name, :address) do | ||
def greeting | def greeting | ||
سطر 14: | سطر 14: | ||
dave.name #=> "Dave" | dave.name #=> "Dave" | ||
dave.greeting #=> "Hello Dave!"</syntaxhighlight> | dave.greeting #=> "Hello Dave!"</syntaxhighlight> | ||
راجع صفحة التابع <code>[[Ruby/Struct/new| | راجع صفحة التابع <code>[[Ruby/Struct/new|new]]</code> للحصول على مزيد من الأمثلة حول إنشاء نسخ (instances) وأصناف فرعية للصنف <code>Struct</code>. | ||
في صفحات التوابع، يشير الوسيط "<code>member</code>" إلى عضو من اعضاء البنية، والذي يكون إما سلسلةً نصيةً مقتبسةً (<code>"name"</code>)، أو [[Ruby/Symbol|رمزًا]] (<code>:name</code>). | |||
== الثوابت == | |||
=== <code>Tms</code> === | |||
== توابع الصنف العامة == | |||
===[[Ruby/Struct/new |<code>new</code>]]=== | |||
ينشئ صنفًا فرعيًّا جديدًا أو نسخةً جديدةً من الصنف <code>Struct</code>. | |||
== توابع النسخة العامة == | |||
===[[Ruby/Struct/equality_operator |<code>==</code>]]=== | |||
===[[Ruby/Struct/ | يتحقق إن كان لبنية ما نفس الصنف الفرعي ونفس قيم الأعضاء مقارنةً <nowiki/>[[Ruby/Struct|ببنية]] أخرى. | ||
===<code rel="mw:WikiLink" href="Ruby/Struct/index_operator " title="Ruby/Struct/index operator">[[Ruby/Struct/index_operator |[]]]</code>=== | |||
=== | يجلب قيمة عضو البنية المعطى، أو قيمة العضو ذي الفهرس المحدَّد. | ||
===<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 |<code>dig</code>]]=== | |||
يستخلص القيمة المتشعبة (nested) المحددة بواسطة تسلسل الكائنات المعطاة عن طريق استدعاء <code>dig</code> في كل خطوة. | |||
===[[Ruby/Struct/each |<code>each</code>]]=== | |||
===[[Ruby/Struct/dig | | يعيد قيمة كل عضو من أعضاء البنية بالترتيب. | ||
يستخلص | ===[[Ruby/Struct/each_pair |<code>each_pair</code>]]=== | ||
===[[Ruby/Struct/each | | يعيد اسم وقيمة كل عضو من أعضاء البنية بالترتيب. | ||
يعيد | ===[[Ruby/Struct/eql-3F |<code>eql?</code>]]=== | ||
===[[Ruby/Struct/each_pair | | يتحقق التابع <code>eql?</code> إن كانت بنيتان تشيران إلى نفس مفتاح الجدول <code>[[Ruby/Hash|Hash]]</code> أي إذا كان لهما نفس صنف <nowiki/>[[Ruby/Struct|البنية]] الفرعي، وكانت قيم أعضائهما متساوية. | ||
يعيد | ===[[Ruby/Struct/hash |<code>hash</code>]]=== | ||
===[[Ruby/Struct/eql-3F | | يعيد القيمة hash استنادًا إلى محتويات هذه البنية. | ||
===[[Ruby/Struct/inspect |<code>inspect</code>]]=== | |||
===[[Ruby/Struct/hash | | يعيد [[Ruby/String|سلسلة نصية]] تحتوي وصفًا لهذه البنية. | ||
يعيد | ===[[Ruby/Struct/length |<code>length</code>]]=== | ||
===[[Ruby/Struct/inspect | | يُعيد عدد أعضاء البنية. | ||
يعيد | ===[[Ruby/Struct/members |<code>members</code>]]=== | ||
===[[Ruby/Struct/length | | يُعيد أعضاء البنية على هيئة [[Ruby/Array|مصفوفة]] من الرموز. | ||
يُعيد عدد أعضاء | ===[[Ruby/Struct/select |<code>select</code>]]=== | ||
===[[Ruby/Struct/members | | يمرر قيم كل أعضاء البنية إلى الكتلة المعطاة ويعيد <nowiki/>[[Ruby/Array|مصفوفة]] تحتوي قيم الأعضاء التي أعادت الكتلة معها القيمة <code>true</code>. | ||
يُعيد أعضاء | ===[[Ruby/Struct/size |<code>size</code>]]=== | ||
===[[Ruby/Struct/select | | يُعيد عدد أعضاء البنية التي استُدعي معها. | ||
يمرر | ===[[Ruby/Struct/to_a |<code>to_a</code>]]=== | ||
===[[Ruby/Struct/size | | يعيد قيم هذه البنية على هيئة <nowiki/>[[Ruby/Array|مصفوفة]]. | ||
===[[Ruby/Struct/to_h |<code>to_h</code>]]=== | |||
===[[Ruby/Struct/to_a | | يُعيد [[Ruby/Hash|جدول Hash]] يحوي أسماء وقيم أعضاء البنية. | ||
يعيد | ===[[Ruby/Struct/to_s |<code>to_s</code>]]=== | ||
===[[Ruby/Struct/to_h | | يعيد [[Ruby/String|سلسلة نصية]] تحتوي وصفًا لهذه البنية. | ||
===[[Ruby/Struct/to_s | | |||
===[[Ruby/Struct/values | | ===[[Ruby/Struct/values |<code>values</code>]]=== | ||
يعيد | يعيد قيم هذه البنية على هيئة [[Ruby/Array|مصفوفة]]. | ||
===[[Ruby/Struct/values_at | | ===[[Ruby/Struct/values_at |<code>values_at</code>]]=== | ||
يُعيد قيم أعضاء البنية المقابلة لكل معامل مُمرَّر إليه على هيئة <nowiki/>[[Ruby/Array|مصفوفة]]. | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Struct.html | *[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
يُعيد قيم أعضاء البنية المقابلة لكل معامل مُمرَّر إليه على هيئة مصفوفة.