|
|
سطر 3: |
سطر 3: |
| [[تصنيف: Ruby Method]] | | [[تصنيف: Ruby Method]] |
| [[تصنيف: Ruby SyntaxError]] | | [[تصنيف: Ruby SyntaxError]] |
| يُستخدم الشكلان الأولان (انظر فقرة البنية العامة) لإنشاء صنف فرعي جديد من <code>[[Ruby/Struct|Struct]]</code> يحمل الاسم <code>class_name</code>، والذي يمكن أن يحتوي قيمة مقابل كل وسيط <code>member_name</code>. يمكن استخدام هذا الصنف الفرعي لإنشاء نسخ من ال[[Ruby/Struct|بنية]] مثل أي صنف آخر.
| | ينشئ التابع <code>class_name</code> استثناء جديدا من النوع <code>SyntaxError</code>. |
| | |
| إذا لم يُعط الوسيط <code>class_name</code>، فستُنشؤ [[Ruby/Struct|بنية]] مجهولة ()anonymous structure. وبخلاف ذلك، سيظهر اسم هذه البنية كثابتة في ال[[Ruby/Struct|بنية]] ، لذلك يجب أن يكون فريدًا في جميع ال[[Ruby/Struct|بني]]ات المٌعرّفة في النظام، ويجب أن يبدأ بحرف كبير. إحالة (Assigning) [[Ruby/Struct|بنية]] إلى ثابت سيؤدي إلى اعتماد ال[[Ruby/Struct|بنية]] اسم الثابت كاسم لها.<syntaxhighlight lang="ruby">
| |
| # 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">
| |
| </syntaxhighlight>إذا أعطي الوسيط الاختياري <code>keyword_init</code> القيمة <code>true</code>، فسيأخذ التابع <code>new</code> وسائط مسماة (keyword arguments) بدلاً من الوسائط العادية.<syntaxhighlight lang="ruby">
| |
| Customer = Struct.new(:name, :address, keyword_init: true)
| |
| Customer.new(name: "Dave", address: "123 Main")
| |
| #=> #<struct Customer name="Dave", address="123 Main">
| |
| </syntaxhighlight>إذا تم إعطاء كتلة، فسيتم تقييمها في سياق البنية، وسيُمرّر إليها الصنف الذي تم إنشاؤه كوسيط: <syntaxhighlight lang="ruby">
| |
| Customer = Struct.new(:name, :address) do
| |
| def greeting
| |
| "Hello #{name}!"
| |
| end
| |
| end
| |
| Customer.new("Dave", "123 Main").greeting #=> "Hello Dave!"
| |
| </syntaxhighlight>هذه هي الطريقة الموصى بها لتخصيص ال[[Ruby/Struct|بنيات]]. حيث تؤدي الأصناف الفرعية أو المجهولة لل[[Ruby/Struct|بنية]] إلى إنشاء أصناف مجهولة إضافية، والتي لن يتم استخدامها.
| |
| | |
| الشكلان الأخيران (انظر فقرة البنية العامة) يُنشئان نسخة جديدة من صنف فرعي لـ<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([msg]) → syntax_error</syntaxhighlight> |
| new([class_name] [, member_name]+, keyword_init: true) → StructClass
| |
| new([class_name] [, member_name]+) {|StructClass| block } → StructClass
| |
| new(value, ...) → object
| |
| StructClass[value, ...]→ object</syntaxhighlight>
| |
| ==المعاملات== | | ==المعاملات== |
| ===<code>class_name</code>=== | | ===<code>msg</code>=== |
| اسم البنية.
| | رسالة الاستثناء. |
| | |
| ===<code>member_name</code>===
| |
| اسم العضو.
| |
| | |
| ===<code>keyword_init</code>===
| |
| إذا أعطي هذا الوسيط القيمة <code>true</code>، فسيأخذ التابع <code>new</code> وسائط مسماة (keyword arguments) بدلاً من الوسائط العادية.
| |
| | |
| ===<code>value</code>===
| |
| قيمة.
| |
|
| |
|
| ==القيمة المُعادة== | | ==القيمة المُعادة== |
| يعيد التابع <code>new</code> [[Ruby/Struct|بنية]] جديدة. | | يعيد التابع <code>new</code> كائنا جديدا من النوع <code>SyntaxError</code>. |
| | |
| ==أمثلة==
| |
| مثال على استخدام التابع <code>new</code>:
| |
| <syntaxhighlight lang="ruby">Customer = Struct.new(:name, :address)
| |
| Customer.new("Dave", "123 Main")
| |
| #=> #<struct Customer name="Dave", address="123 Main">
| |
| Customer["Dave"]
| |
| #=> #<struct Customer name="Dave", address=nil></syntaxhighlight>
| |
| ==انظر أيضا== | | ==انظر أيضا== |
| * صفحة [[Ruby/Struct|البنيات]]. | | * صفحة الصنف [[Ruby/SyntaxError|SyntaxError]]. |
| ==مصادر== | | ==مصادر== |
| *[http://ruby-doc.org/core-2.5.1/SyntaxError.html#method-c-new قسم التابع new في الصنف SyntaxError في توثيق روبي الرسمي.] | | *[http://ruby-doc.org/core-2.5.1/SyntaxError.html#method-c-new قسم التابع new في الصنف SyntaxError في توثيق روبي الرسمي.] |
ينشئ التابع class_name
استثناء جديدا من النوع SyntaxError
.
البنية العامة
new([msg]) → syntax_error
المعاملات
msg
رسالة الاستثناء.
القيمة المُعادة
يعيد التابع new
كائنا جديدا من النوع SyntaxError
.
انظر أيضا
مصادر