|
|
سطر 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 في توثيق روبي الرسمي.] |