آموزش پاسکال شی‌گرا

جستجوی Namespace ها در پاسکال شی‌گرا

جستجوی Namespace ها در پاسکال شی‌گرا

همان طور که می‌دانید یک یونیت برای استفاده از دیگر یونیت‌ها باید اسامی آن‌ها را در لیست uses خود قیدکند
در مورد یونیت‌هایی که Namespace آن‌ها به صورت صریح قید شده باشد
دامنه جستجو مشخص خواهد بود اما درمورد یونیت‌های generic کامپایلر باید دامنه جستجو را مشخص کند
برای مثال به عبارات زیرتوجه کنید

unit MyCompany.programs.Units.Myunit1;
uses Mycompany.Libs.unit2 .unit3. unit4;

تعاریف فوق مشخص می‌کنند که Myunit عضوی از یک Namespace با نام Mycompany.Programs.Unit است
هم چنین Myunit1 سه یونیت دیگر را مورد استفاده قرارداده است
درمورد unit2 مشکلی وجود ندارد به این دلیل که نام یونیت به طور کامل ذکر شده است
اما در مورد یونیت unit3  و  unit4 کامپایلر باید عمل جستجو را انجام دهد

  • ترتیب جستجوی Namespace ها

مکان‌‎های جستجوی Namespace ها با توجه به چهار منبع مشخص خواهد شد

  • تنظیمات کامپایلر
  • عبارت Namespace مربوط به فایل پروژه
  • Project default namespace
  • Namespace مربوط به یونیت جاری

فایل پروژه ممکن است به صورت اختیاری شامل لیستی از Namespace ها باشد
که به وسیله علامت کاما  ,  از یکدیگر جدا شده و با علامت سمیکالن ; خاتمه یافته باشند
برای مثال ممکن است فایل پروژه شامل عبارات زیر باشد

Program Mycompany.Programs.MyProgram;

NameSpaces MyCompany.Libs.UIWIdgets,
           MyCompany.Libs.Network;

درحالت کلی جستجوی Namespace ها به ترتیب زیر صورت میگرد.

  1. Namespace مربوط به یونیت جاری (در صورت وجود)
  2. Project default Namespace (در صورت وجود)
  3. Namespace هایی که توسط عبارت Namespace مشخص شده باشند
    (به ترتیب از انتهای لیست مورد جستجو قرار می گیرند)
  4. Namespace هایی که از طریق تنظیمات کامپایلر مسخص شده باشند

با توجه به مثال قبلی اگر یونیت برنامه دارای عبارت زیر باشد

Unit MyCompany.Programs.Units.MyUnit1;

کامپایلر دلفی عمل جستجوی Namespace ها را به ترتیب زیر انجام خواهد داد

  1. MyCompany.Programs.Units
  2. MyCompany.Programs
  3. MyCompany.Libs.Network
  4. MyCompany.Libs.UIWidgets
  5. Namespace هایی که از طریق تنظیمات کامپایلر مشخص شده اند

توجه داشته باشید که اگر یونیت جاری generic باشد عمل جستجو از Project Default Namespace آغاز خواهد شد

[adinserter block="1"]
3.7/5 - (3 امتیاز)

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا