آموزش مپینگ های تو در تو در سالیدیتی

آموزش مپینگ های تو در تو در سالیدیتی

در اغلب زبانهای برنامه نویسی، یک هش مپ (Hashmap) یا مپ (Map) می‌تواند شامل مپ دیگری باشد. سالیدیتی نیز از این قابلیت پشتیبانی می‌کند. اما از آنجا که مپینگ ها در سالیدیتی نمی‌توانند به‌عنوان خروجی یک تابع بازگردانده شوند، هنگام استفاده از آن‌ها باید تمامی کلید های مورد نیاز را به تابع بدهید.

بیایید به یک مثال ساده نگاه کنیم:

استفاده از مپینگ های تو در تو در قراردادهای هوشمند بسیار رایج‌تر از آرایه های تو در تو است. به‌عنوان مثال، می‌توان از آن برای ثبت اطلاعات حسابرسی یا بدهی استفاده کرد:

در این مثال، ترتیب پارامتر ها اهمیت دارد. این ساختار به این معناست که هر وام‌ دهنده (lender) می‌تواند چند وام‌ گیرنده (borrower) داشته باشد. اگر ترتیب را برعکس می‌کردیم، یعنی borrower در ابتدا قرار می‌گرفت، آنگاه معنای ساختار این می‌شد که هر وام‌ گیرنده ممکن است چند وام‌ دهنده داشته باشد.

همان محدودیت‌هایی که برای مپینگ های ساده وجود دارد، برای مپینگ های تو در تو نیز صادق است:

  • نمی‌توان کلید های آن‌ها را پیمایش (iterate) کرد.

  • نمی‌توان آن‌ها را درون یک تابع تعریف کرد.

  • نمی‌توان آن‌ها را از یک تابع بازگرداند.

نکته: مپینگ های عمومی تو در تو به درستی کار نمی‌کنند

یکی دیگر از ویژگی‌های عجیب سالیدیتی این است که اگر یک مپینگ را به‌صورت public تعریف کنید، کامپایلر به‌صورت خودکار برای آن یک تابع getter ایجاد می‌کند. اما این توابع getter تنها در صورتی قابل استفاده‌اند که شما همه کلید های لازم را به آن‌ها بدهید.

بله، درست خواندید!

راه‌حل استاندارد این است که مپینگ های تو در تو را به صورت private تعریف کرده و سپس یک تابع عمومی (public) برای خواندن مقادیر مورد نیاز ایجاد کنید.

به این مطلب امتیاز دهید

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.

آموزش پروژه محور طراحی سایت با پایتون و جنگو مختص بازار کار
  • انتشار: ۱۰ اردیبهشت ۱۴۰۴

دسته بندی موضوعات

آخرین محصولات فروشگاه

مشاهده همه

نظرات

بازخوردهای خود را برای ما ارسال کنید