الفرق بين المراجعتين لصفحة: «Ruby/Struct/new»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>new</code> الخاص بالصنف <code>Struct</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف:...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Struct]] | [[تصنيف: Ruby Struct]] | ||
يُستخدم الشكلان الأولان (انظر فقرة البنية العامة) لإنشاء صنف فرعي جديد من <code>[[Ruby/Struct|Struct]]</code> يحمل الاسم <code>class_name</code>، والذي يمكن أن يحتوي قيمة لكل وسيط <code>member_name</code>. يمكن استخدام هذا الصنف الفرعي لإنشاء نسخ من ال[[Ruby/Struct|بنية]] مثل أي صنف ( | يُستخدم الشكلان الأولان (انظر فقرة البنية العامة) لإنشاء صنف فرعي جديد من <code>[[Ruby/Struct|Struct]]</code> يحمل الاسم <code>class_name</code>، والذي يمكن أن يحتوي قيمة لكل وسيط <code>member_name</code>. يمكن استخدام هذا الصنف الفرعي لإنشاء نسخ من ال[[Ruby/Struct|بنية]] مثل أي صنف (<code>[[Ruby/Class|Class]]</code>) آخر. | ||
إذا لم يُعط الوسيط <code> | إذا لم يُعط الوسيط <code>class_name</code>، فستُنشؤ [[Ruby/Struct|بنية]] مجهولة. وبخلاف ذلك، سيظهر اسم هذه البنية كثابتة في ال[[Ruby/Struct|بنية]] <code>[[Ruby/Struct|Struct]]</code> ، لذلك يجب أن يكون فريدًا في جميع ال[[Ruby/Struct|بنية]]ات المٌعرّفة في النظام، ويجب أن يبدأ بحرف كبير. إحالة (Assigning) [[Ruby/Struct|بنية]] إلى ثابت سيؤدي إلى اعتماد ال[[Ruby/Struct|بنية]] اسم الثابت كاسم لها. | ||
إذا مُرٍّر إلى الوسيط الاختياري <code> | إذا مُرٍّر إلى الوسيط الاختياري <code>keyword_init</code> القيمة <code>true</code>، فسيأخذ التابع new وسائط مسماة (keyword arguments) بدلاً من الوسائط العادية. | ||
إذا تم إعطاء كتلة سيتم تقييمها في سياق <code> | إذا تم إعطاء كتلة سيتم تقييمها في سياق <code>StructClass</code>، وسيُمرّر إليها الصنف الذي تم إنشاؤه كوسيط: | ||
سطر 19: | سطر 19: | ||
هذه هي الطريقة الموصى بها لتخصيص ال[[Ruby/Struct|بنية]]. تؤدي الأصناف الفرعية أو المجهولة لل[[Ruby/Struct|بنية]] إلى إنشاء أصناف مجهولة إضافية، والتي لن يتم استخدامها. | هذه هي الطريقة الموصى بها لتخصيص ال[[Ruby/Struct|بنية]]. تؤدي الأصناف الفرعية أو المجهولة لل[[Ruby/Struct|بنية]] إلى إنشاء أصناف مجهولة إضافية، والتي لن يتم استخدامها. | ||
الشكلان الأخيران (انظر فقرة البنية العامة) الأخيرين ينشئان نسخة جديدة من صنف فرعي للصنف <code>[[Ruby/Struct|Struct]]</code>. يجب أن يكون عدد الوسائط <code> | الشكلان الأخيران (انظر فقرة البنية العامة) الأخيرين ينشئان نسخة جديدة من صنف فرعي للصنف <code>[[Ruby/Struct|Struct]]</code>. يجب أن يكون عدد الوسائط <code>value</code> أصغر من أو يساوي عدد الخاصيات المعرّفة في ال[[Ruby/Struct|بنية]]. القيمة الافتراضية للوسائط غير المعينة هي <code>nil</code>. إن كان عدد الوسائط المُمررة أكثر من عدد الخاصيات فسيُطلق الاستثناء <code>[[Ruby/ArgumentError|ArgumentError]]</code>. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">new([class_name] [, member_name]+)→ StructClass | <syntaxhighlight lang="ruby">new([class_name] [, member_name]+)→ StructClass |
مراجعة 13:49، 4 نوفمبر 2018
يُستخدم الشكلان الأولان (انظر فقرة البنية العامة) لإنشاء صنف فرعي جديد من Struct
يحمل الاسم class_name
، والذي يمكن أن يحتوي قيمة لكل وسيط member_name
. يمكن استخدام هذا الصنف الفرعي لإنشاء نسخ من البنية مثل أي صنف (Class
) آخر.
إذا لم يُعط الوسيط class_name
، فستُنشؤ بنية مجهولة. وبخلاف ذلك، سيظهر اسم هذه البنية كثابتة في البنية Struct
، لذلك يجب أن يكون فريدًا في جميع البنيةات المٌعرّفة في النظام، ويجب أن يبدأ بحرف كبير. إحالة (Assigning) بنية إلى ثابت سيؤدي إلى اعتماد البنية اسم الثابت كاسم لها.
إذا مُرٍّر إلى الوسيط الاختياري keyword_init
القيمة true
، فسيأخذ التابع new وسائط مسماة (keyword arguments) بدلاً من الوسائط العادية.
إذا تم إعطاء كتلة سيتم تقييمها في سياق StructClass
، وسيُمرّر إليها الصنف الذي تم إنشاؤه كوسيط:
هذه هي الطريقة الموصى بها لتخصيص البنية. تؤدي الأصناف الفرعية أو المجهولة للبنية إلى إنشاء أصناف مجهولة إضافية، والتي لن يتم استخدامها.
الشكلان الأخيران (انظر فقرة البنية العامة) الأخيرين ينشئان نسخة جديدة من صنف فرعي للصنف Struct
. يجب أن يكون عدد الوسائط value
أصغر من أو يساوي عدد الخاصيات المعرّفة في البنية. القيمة الافتراضية للوسائط غير المعينة هي nil
. إن كان عدد الوسائط المُمررة أكثر من عدد الخاصيات فسيُطلق الاستثناء ArgumentError
.
البنية العامة
new([class_name] [, member_name]+)→ StructClass
new([class_name] [, member_name]+, keyword_init: true) → StructClass
new([class_name] [, member_name]+) {|StructClass| block } → StructClass
new(value, ...) → object
StructClass[value, ...]→ object
المعاملات
class_name
member_name+
keyword_init: true
value
...
القيمة المُعادة
أمثلة
مثال على استخدام التابع new
:
# Create a structure with a name under Struct
Struct.new("Customer", :name, :address)
#=> Struct::Customer
Struct::Customer.new("Dave", "123 Main")
#=> #<struct Struct::Customer name="Dave", address="123 Main">
# Create a structure named by its constant
Customer = Struct.new(:name, :address)
#=> Customer
Customer.new("Dave", "123 Main")
#=> #<struct Customer name="Dave", address="123 Main">
انظر أيضا
- التابع
==
: معامل التساوي - تُعاد القيمةtrue
إن كان للبنيةother
(انظر فقرة البنية العامة) نفس الصنف الفرعي، وكان لها نفس قيم الأعضاء مقارنة بالبنية التي استُدعي معها.