Mapping در سالیدیتی
6 مرداد 1401 1401-05-06 11:47Mapping در سالیدیتی
Mapping در سالیدیتی
Mapping در سالیدیتی مانند جدول هش (hash table) یا فرهنگ لغت (dictionary) در هر زبان دیگری عمل می کند. Hash table برای ذخیره داده ها به شکل جفت های کلید-مقدار استفاده می شوند، یک کلید می تواند هر یک از انواع داده های داخلی باشد، اما انواع مرجع مجاز نیستند در حالی که مقدار می تواند از هر نوع باشد. Mapping بیشتر برای مرتبط کردن آدرس منحصر به فرد اتریوم با نوع ارزش مرتبط استفاده می شوند.Mapping در زبان های دیگر مانند پایتون با اسم dictionary و در زبان جاوا با اسم Map نامگذاری شده است.هر نوع متغیر دیگری که یک نوع کلید و یک نوع مقدار را بپذیرد، Mapping نامیده می شود.
قبل از مطالعه مقاله Mapping در سالیدیتی توصیه می کنیم مقالات و محتواهای آموزش زبان سالیدیتی را هم که در بخش زیر قرار گرفته مطالعه نمایید.
- چگونه یک برنامه نویس سالیدیتی شویم؟
- مزایای یادگیری برنامه نویسی سالیدیتی
- کسب درآمد دلاری با قرارداد هوشمند
- دستورات شرطی در سالیدیتی
- حلقه های تکرار در سالیدیتی
- مدیریت خطا در سالیدیتی
- ساختار در برنامه نویسی سالیدیتی
- دستور Enums در برنامه نویسی سالیدیتی
سینتکس Mapping در سالیدیتی
Mapping (نقشه ها) با سینتکس “mapping(keyType => valueType)” ایجاد می شوند و مانند هر نوع متغیر دیگری در Solidity تعریف می شوند
mapping(key => value) <access specifier> <name>;
_KeyType – می تواند هر نوع داخلی به اضافه بایت و رشته باشد که به uint، bool یا address ترجمه می شود.همچنین نمی تواند array , struct , enum یا Mapping باشد.
_ValueType – می تواند هر نوع باشد. این باعث می شود که نگاشت ها بسیار منعطف و برای استفاده راحت باشند.
همچنین می توانید از نگاشت تو در تو به روش زیر استفاده کنید:
mapping(_KeyType => mapping(_KeyType => _ValueType)) public mappingName;
mapping تو در تو جایی است که یک کلید به یک نوع مقدار از mapping دیگر مرتبط می شود.
چند نکته در مورد mapping ها قابل توجه است:
- آنها برای جستجوی سریع عالی هستند.
- mapping ها طول ندارد.
- به طور پیشفرض نمیتوانید یک mpping را تکرار کنید.
- به منظور تکرار یک mapping، باید از ترکیبی از mapping ها استفاده کنید و کلیدها را در یک آرایه ذخیره کنید.
- شما نمی توانید اندازه یک mpping را تعیین یا بدست آورید.
- از mpping فقط می توان برای متغیرهای حالتی که به عنوان انواع مرجع ذخیره سازی عمل می کنند استفاده کرد.
ساخت Mapping در سالیدیتی
Mapping (نگاشت) به عنوان هر نوع متغیر دیگری تعریف می شود که یک نوع کلید و یک نوع مقدار را می پذیرد.قرارداد زیر یک قرارداد ساده است که چیزی در آن تعریف نشده است. در این قرارداد نحوه ساخت و عملکرد یک mapping نوشته شده است.
pragma solidity ^0.8.0;
//Sample contract is an example
contract SampleContract {
//nothing is defined in this contract
}
بهترین راه برای یادگیری نحوه عملکرد mapping، آزمایش و ایجاد یک قرارداد هوشمند در محیط Remix است.
مثال: در مثال زیر، قرارداد mapping_example یک ساختار تعریف شده و درآن mapping ایجاد شده است.
// Solidity program to
// demonstrate mapping
pragma solidity ^0.4.18;
// Defining contract
contract mapping_example {
//Defining structure
struct student
{
// Declaring different
// structure elements
string name;
string subject;
uint8 marks;
}
// Creating a mapping
mapping (
address => student) result;
address[] public student_result;
}
تصویر خروجی کد های Mapping در سالیدیتی
افزودن مقادیر به Mapping
همانطور که mapping ایجاد میشود، سعی میکنیم برای درک بهتر مقداری به mapping اضافه کنیم
مثال: در مثال زیر، قرارداد mapping_example یک ساختار تعریف شده و درآن mapping ایجاد شده است و مقادیری به نگاشت (mapping) اضافه میشوند.
// Solidity program to
// demonstrate adding
// values to mapping
pragma solidity ^0.4.18;
// Creating contract
contract mapping_example {
//Defining structure
struct student {
//Declaring different
// structure elements
string name;
string subject;
uint8 marks;
}
// Creating mapping
mapping (
address => student) result;
address[] public student_result;
// Function adding values to
// the mapping
function adding_values() public {
var student
= result[0xDEE7796E89C82C36BAdd1375076f39D69FafE252];
student.name = "John";
student.subject = "Chemistry";
student.marks = 88;
student_result.push(
0xDEE7796E89C82C36BAdd1375076f39D69FafE252) -1;
}
}
تصویر خروجی کد های مقدار دهی Mapping
منابع مقاله Mapping در سالیدیتی
وب سایت : geeksforgeeks – tutorialspoint