إنشاء مثيل وأسلوب تهيئة

01

من 02

إنشاء مثيل وأسلوب تهيئة

تعلم روبي أون ريلز: اللعب مع إيرب
brnzwngs / Flikr / CC BY 2.0

عندما تحدد فئة في روبي ، سوف يعين روبي كائن فئة جديدة إلى اسم فئة ثابت. على سبيل المثال ، إذا كنت ستقول شخص الطبقة؛ النهاية، هذا يكافئ تقريبا شخص = Class.new. كائن الفئة هذا من النوع صف دراسي، ويحمل عددًا من الطرق المفيدة لصنع نسخ من تلك الحالات.

02

من 02

صنع الحالات

لإنشاء مثيل جديد لفصل دراسي ، اتصل بهذه الفئة جديد طريقة. بشكل افتراضي ، سيؤدي هذا إلى تخصيص الذاكرة المطلوبة للفئة وإرجاع مرجع إلى الكائن الجديد. لذلك ، إذا كنت ترغب في إنشاء مثيل جديد لل شخص الطبقة ، كنت اتصل شخص جديد.

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

تهيئة الحالات

كائن فارغ ليست مثيرة للغاية. من أجل البدء في استخدام الكائن الخاص بك ، يجب أولاً تهيئة (بافتراض أنه يحتوي على أي شيء متغيرات سريعة يحتاج إلى تهيئة). ويتم ذلك عن طريق تهيئة طريقة. سوف يمر روبي بأية حجج تمر بها SomeClass.new على تهيئة على الكائن الجديد. يمكنك بعد ذلك استخدام التعيينات والأساليب المتغيرة العادية لتهيئة حالة الكائن. في هذا المثال ،

instagram viewer
شخص يتم تقديم الطبقة التي تهيئة ستأخذ الطريقة حجة الاسم والعمر ، وتعيينها لمتغيرات المثال.

تهيئة شخص الفئة def (الاسم ، العمر)name ،age = الاسم ، نهاية نهاية العمر bob = Person.new ('Bob' ، 34)

يمكنك أيضًا استخدام هذه الفرصة للحصول على أي موارد قد تحتاجها. شبكة مفتوحة مآخذ، افتح الملفات ، اقرأ أي بيانات تحتاجها ، إلخ. التحذير الوحيد هو أن الناس عموما لا يتوقعون تهيئة طرق للفشل. تأكد من توثيق أي فشل ربما تهيئة طرق تماما.

كائنات Destorying

بشكل عام ، أنت لا تدمر الأشياء في روبي. إذا كنت قادمًا من لغة C ++ أو لغة أخرى دون جامع للقمامة ، فقد يبدو هذا غريبًا. لكن في روبي (ومعظم اللغات الأخرى التي يتم جمعها من القمامة) ، لا تدمر الأشياء ، بل تتوقف عن الرجوع إليها. في دورة جمع البيانات المهملة التالية ، سيتم تدمير أي كائن بدون أي إشارة إليه تلقائيًا. هناك بعض الأخطاء ذات الإشارات الدائرية ، ولكن بشكل عام لا يعمل هذا بلا عيب ولا تحتاج حتى إلى "مدمر".

إذا كنت تتساءل عن الموارد ، فلا تقلق بشأن ذلك. عندما يتم إتلاف الكائن الذي يحتفظ بالمورد ، سيتم تحرير المورد. سيتم إغلاق الملفات المفتوحة واتصالات الشبكة وإلغاء تخصيص الذاكرة إلخ. فقط إذا قمت بتخصيص أي موارد في ملحق C ، فسوف تحتاج حقًا إلى القلق بشأن تخصيص الموارد. رغم عدم وجود ضمان عند تشغيل أداة تجميع مجمعي البيانات المهملة. من أجل تخصيص الموارد في في الوقت المناسب بطريقة ، حاول تحريرها يدويًا.

صنع نسخ من الكائنات

روبي يمر بالرجوع. إذا قمت بتمرير مرجع إلى كائن إلى طريقة، وتستدعي هذه الطريقة طريقة تقوم بتعديل حالة هذا الكائن ، يمكن أن تحدث عواقب غير مقصودة. علاوة على ذلك ، يمكن للطرق بعد ذلك حفظ المرجع إلى الكائن لتعديله في وقت لاحق كثيرًا ، مما يؤدي إلى تأخر تأثير الخطأ. لتجنب ذلك ، يوفر Ruby بعض الطرق لتكرار الكائنات.

لتكرار أي كائن ، ما عليك سوى الاتصال بـ some_object.dup طريقة. سيتم تخصيص كائن جديد وسيتم نسخ جميع متغيرات مثيل الكائن. ومع ذلك ، فإن نسخ متغيرات المثيل هو ما كان من المفترض تجنبه: هذا ما يسمى "نسخة ضحلة". إذا كان عليك الاحتفاظ بملف في متغير مثيل ، فكل من الكائنات المكررة يشير الآن إلى نفسه ملف.

فقط كن على علم بأن النسخ هي نسخ ضحلة قبل استخدام المغفل طريقة. انظر المقال صنع نسخ عميقة في روبي للمزيد من المعلومات.

instagram story viewer