קישור משתנים#
משתנה קשור נראה כמו סקלר, מערך, האש או מטפל קובץ רגיל, אבל כל קריאה, כתיבה ואיטרציה עליו מנותבות מחדש דרך מתודות שאתם כותבים. המשתנה הוא הפנים הציבוריות; מחלקה מתכנון שלכם היא המנגנון שמאחוריו. השמה לסקלר קשור קוראת ל־STORE שלכם; קריאת מפתח של האש קשור קוראת ל־FETCH שלכם; הרצת keys על האש קשור מפעילה את FIRSTKEY ו־NEXTKEY שלכם. הקורא כותב Perl רגיל ולעולם אינו רואה את המחלקה.
העקיפה הזו היא מה שהופך את tie לעוצמתי. האש יכול להיות חזית מעל מסד נתונים על הדיסק. סקלר יכול לחשב את עצמו מחדש בכל קריאה. מטפל קובץ יכול לאסוף למחרוזת את כל מה שמודפס אליו. הקוד שמשתמש במשתנה אינו משתנה; רק המחלקה שמאחוריו משתנה.
מדריך זה עוסק בכתיבת המחלקה - החלק ש־perltie מכנה היישום. הצד המובנה (tie, tied, untie) ותפריטי המתודות המלאים לכל סוג משתנה כבר מתועדים בעמוד העזר tie. מדריך זה מקשר לשם עבור החתימות ומתרכז במה שאותם עמודים אינם מלמדים: כיצד לבנות מחלקת tie פועלת, מה כל מתודה חייבת להחזיר, ובדיוק מתי זמן הריצה קורא לה.
איזה פרק דרוש לכם#
לכל סוג משתנה יש בנאי משלו וקבוצת מתודות משלו. קראו את הפרק שמתאים לסיגיל שלפניכם.
סקלרים קשורים -
TIESCALAR,FETCH,STORE,DESTROY. ממשק ה־tie הקטן ביותר; התחילו כאן כדי ללמוד את הצורה של כל האחרים.האשים קשורים -
TIEHASHבתוספת פרוטוקול האיטרציה (FIRSTKEY/NEXTKEY),EXISTS,DELETE,CLEAR, ו־SCALAR. העשיר ביותר מבין סוגי הנתונים.מערכים קשורים -
TIEARRAY, פרוטוקול הגודל (FETCHSIZE/STORESIZE/EXTEND), והמשנים (PUSH,POP,SHIFT,UNSHIFT,SPLICE).מטפלי קובץ קשורים -
TIEHANDLEווי הקלט/פלט (PRINT,PRINTF,WRITE,READLINE,READ,GETC, וחבריהם).
כיצד בנוי כל פרק#
כל פרק עוקב אחר אותה צורה:
החוזה באמצעות דוגמה. במקום לחזור על תפריט המתודות (עמוד העזר
tieכבר מפרט כל חתימה), כל פרק בונה מחלקה אחת שלמה וברת־הרצה ומסביר כל מתודה כפי שהיא מופיעה.תזמון הקריאה. החלק הלא־מובן מאליו ב־tie הוא מתי זמן הריצה מפעיל כל וו - איזה אופרטור מפעיל איזו מתודה, באיזה הקשר, עם אילו ארגומנטים. כל פרק מבהיר זאת.
מינימום בר־קיימא לעומת מלא. מספר המתודות המזערי שניתן להגדיר ועדיין לקבל tie שמיש, ולאחר מכן שאר התפריט ומה כל אחת מהן מעניקה לכם.
הדרך הקלה. כל סוג נתונים מגיע עם מחלקת בסיס
Tie::*שמממשת את המתודות המייגעות באמצעות כמה מתודות ליבה. ירשו ממנה ועקפו רק את הווים המעניינים.
מה עולים ה־ties#
כל פעולה על משתנה קשור היא קריאת מתודה. חיפוש בהאש קשור הוא שיגור FETCH במקום שחיפוש בהאש רגיל הוא גישה בודדת לזיכרון - איטי באופן ניכר בלולאה צפופה. tie הוא הכלי הנכון כאשר העקיפה מצדיקה את עצמה (משתנה הנתמך בקובץ, ערך מחושב, חזית רישום), לא כאשר אתם פשוט רוצים האש מפואר יותר. עבור עבודה בכמויות על מכל קשור, קראו אותו אל מערך או האש רגיל פעם אחת, פעלו, וכתבו בחזרה.
הבדלים מן ה-upstream#
The tie mechanism is Perl 5.42’s own, so tie classes behave exactly as they do on upstream Perl.