אינסטינציה ושיטת האתחול

click fraud protection

01

של 02

אינסטינציה ושיטת האתחול

לימוד רובי על מסילות: משחק עם irb
brnzwngs / Flikr / CC BY 2.0

כשאתה מגדיר מחלקה ברובי, רובי יקצה אובייקט מחלקה חדש ל- שם כיתה קבוע. לדוגמה, אם היית אומר אדם בכיתה; סוף, זה שווה בערך ל אדם = כיתה. חדש. אובייקט מחלקה זה הוא מהסוג מעמד, ומחזיקה במספר שיטות שימושיות להכנת מקרים של עותקים של אותם מקרים.

02

של 02

ביצוע מקרים

כדי ליצור מופע חדש לשיעור, התקשר לשיעור זה חדש שיטה. כברירת מחדל, זה יקצה את הזיכרון הדרוש לכיתה ויחזיר הפניה לאובייקט החדש. לכן, אם היית עושה מופע חדש של ה- אדם כיתה, הייתם מתקשרים אדם. חדש.

אמנם בהתחלה זה נראה קצת לאחור, אין חדש מילת מפתח ברובי או בכל תחביר מיוחד. אובייקטים חדשים נוצרים בשיטה רגילה אשר, כל שנאמר ונעשה, עושה דברים פשוטים יחסית.

אתחול מופעים

חפץ ריק אינו מרגש במיוחד. כדי להתחיל להשתמש באובייקט שלך, תחילה עליו לאתחל אותו (בהנחה שיש לו כזו משתני מופע שצריך לאתחל). זה נעשה באמצעות לאתחל שיטה. רובי יעביר את כל הוויכוחים שאליהם תעביר SomeClass.new אל לאתחל על האובייקט החדש. לאחר מכן תוכל להשתמש בהקצאות ושיטות משתנות רגילות כדי לאתחל את מצב האובייקט. בדוגמה זו, א אדם מוצג השיעור של מי לאתחל השיטה תיקח טיעון שם וגיל ותקצה אותם למשתני מופע.

instagram viewer
class class def initialize (שם, גיל) @ name, @age = name, סוף סוף גיל bob = Person.new ('Bob', 34)

אתה יכול גם להשתמש בהזדמנות זו כדי לרכוש את המשאבים הדרושים לך. רשת פתוחה שקעים, לפתוח קבצים, לקרוא כל הנתונים הדרושים לך וכו '. האזהרה היחידה היא שאנשים בדרך כלל לא מצפים לאתחל שיטות להיכשל. הקפד לתעד כל נכשל שאולי לאתחל שיטות ביסודיות.

הרס חפצים

באופן כללי, אתה לא משמיד חפצים ברובי. אם אתה בא מ- C ++ או משפה אחרת בלי אספן זבל, זה אולי נראה מוזר. אבל ברובי (וברוב השפות האחרות שנאספו), אתה לא משמיד חפצים, אתה פשוט מפסיק להתייחס אליו. במחזור איסוף האשפה הבא, כל חפץ בלי שום דבר שמתייחס אליו ייהרס אוטומטית. יש כמה באגים עם הפניות מעגליות, אבל באופן כללי זה עובד ללא רבב ואתה אפילו לא צריך "הרס".

אם אתה תוהה לגבי משאבים, אל תדאג. כאשר האובייקט המחזיק במשאב נהרס, המשאב ישוחרר. קבצים פתוחים וחיבורי רשת ייסגרו, זיכרון יועבר וכו '. רק אם תקצה משאבים כלשהם בתוסף C, תצטרך באמת לדאוג למקורות משאבים. אם כי אין שום ערובה מתי יופעל אספן האשפה. על מנת להקצות משאבים ב- א בזמן באופן, נסה לשחרר אותם באופן ידני.

הכנת עותקים של חפצים

רובי עובר דרך הפניה. אם אתה מעביר הפניה לאובייקט ל- a שיטה, ושיטה זו מכנה שיטה שמשנה את מצבו של אותו אובייקט, עלולות להיווצר השלכות בלתי מכוונות. יתרה מזאת, שיטות יכולות לשמור את ההתייחסות לאובייקט לשינוי בזמן הרבה יותר מאוחר, ולגרום לאפקט מעכב עבור הבאג. כדי להימנע מכך, רובי מספק כמה שיטות לשכפול אובייקטים.

כדי לשכפל כל אובייקט, פשוט התקשר אל some_object.dup שיטה. יוקצה אובייקט חדש וכל משתני המופע של האובייקט יועתקו. עם זאת, העתקת משתני מופע זה מה שאמור היה להימנע ממנו: זה מה שנקרא "עותק רדוד". אם היית צריך להחזיק קובץ במשתנה מופע, שני האובייקטים המשוכפלים יתייחסו זהים כעת קובץ.

רק להיות מודע לכך שההעתקים הם עותקים רדודים לפני השימוש ב- דופ שיטה. ראו את המאמר הכנת עותקים עמוקים ברובי למידע נוסף.

instagram story viewer