הוצג בדלפי 2009, ה- כיתת חילוץ, מוגדר בסרטים הגנריים. יחידת האוספים, מייצגת אוסף סוג טבלה של חשיש כללי של זוגות ערכי מפתח.
סוגים גנריים, שהוצג גם בדלפי 2009, מאפשרים לך להגדיר מחלקות שאינן מגדירות באופן ספציפי את סוג חברי הנתונים.
מילון דומה, באופן מסוים, למערך. בספר מערך אתה עובד עם סדרה (אוסף) של ערכים באינדקס לפי ערך שלם, שיכולים להיות כל אחד ערך סוג רגיל. למדד זה יש גבול תחתון וגבול עליון.
במילון, אתה יכול לאחסן מפתחות וערכים שבהם כל אחד מהם יכול להיות מכל סוג.
הבנאי של TD
מכאן הצהרתו של בנאי TDScript:
בדלפי, ה- TDictionary מוגדר כטבלת חשיש. טבלאות Hash מייצגות אוסף של צמדי מפתח וערך המאורגנים על פי קוד ה- hash של המפתח. טבלאות Hash מותאמות במיוחד לחיפושים (מהירות). כאשר זוג ערכי מפתח מתווסף לטבלת חשיש, חשיפת המפתח מחושבת ונשמרת יחד עם הצמד שנוסף.
ה- TKey ו- TValue, מכיוון שהם גנריים, יכולים להיות מכל סוג. לדוגמה, אם המידע שאתה אמור לאחסן במילון מגיע ממסד נתונים כלשהו, המפתח שלך יכול להיות GUID (או ערך אחר המציג את האינדקס הייחודי) בעוד הערך יכול להיות אובייקט הממופה לשורת נתונים במסד הנתונים שלך שולחנות.
באמצעות TDictions
לשם הפשטות, הדוגמה הבאה משתמשת במספרים שלמים עבור TKeys ותווים עבור TValues.
ראשית, אנו מצהירים על המילון שלנו על ידי ציון מהם סוגי ה- TKey וה- TValue:
ואז המילון מתמלא בשיטת הוספה. מכיוון שלמילון לא יכול להיות שני זוגות עם אותו ערך מפתח, אתה יכול להשתמש בשיטת ConceptsKey כדי לבדוק אם זוג כלשהו המוערך במפתח כבר נמצא במילון.
להסרת זוג מהמילון, השתמש בשיטת הסר. שיטה זו לא תגרום לבעיות אם זוג עם מפתח שצוין אינו חלק מהמילון.
כדי לעבור בין כל הזוגות על ידי לולאה בין מקשים אתה יכול לעשות א לולאה.
השתמש בשיטת TryGetValue כדי לבדוק אם צמד ערכי מפתח כלול במילון.
מיון המילון
מכיוון שמילון הוא טבלת חשיש, הוא לא שומר פריטים בסדר מיון מוגדר. כדי לחזור על המקשים הממוינים כדי לענות על הצורך הספציפי שלך, נצל את ה- TList - סוג אוסף גנרי התומך במיון.
הקוד למעלה ממיין מפתחות עולה ויורד ותופס ערכים כאילו הם נשמרו בסדר המיון במילון. המיון היורד של ערכי מפתח מסוג מספר שלם משתמש ב- TComparer ובשיטה אנונימית.
כאשר מפתחות וערכים הם מסוג סוג נושא
הדוגמה המפורטת לעיל היא דוגמא פשוטה מכיוון שהמפתח והערך הם סוגים פשוטים. אתה יכול לקבל מילונים מורכבים שבהם המפתח והערך הם סוגים "מורכבים" כמו רשומות או אובייקטים.
להלן דוגמא נוספת:
כאן משתמשים ברשומה מותאמת אישית עבור המפתח ומשמשים לאובייקט / מחלקה מותאמים אישית לערך.
שימו לב לשימוש במומחה TObjectDiction שיעור כאן. TObjectDiction יכול להתמודד עם חיי האובייקטים באופן אוטומטי.
ערך המפתח לא יכול להיות אפס, בעוד שערך הערך יכול.
כאשר מופעל TObjectDictions, פרמטר Ownerships מציין אם המילון הוא הבעלים של המקשים, הערכים או שניהם - ולכן עוזר לך שלא יהיו דליפות זיכרון.