وبلاگ

Mapping در سالیدیتی

Mapping در سالیدیتی
سالیدیتی

Mapping در سالیدیتی

Mapping در سالیدیتی مانند جدول هش (hash table) یا فرهنگ لغت (dictionary) در هر زبان دیگری عمل می کند. Hash table برای ذخیره داده ها به شکل جفت های کلید-مقدار استفاده می شوند، یک کلید می تواند هر یک از انواع داده های داخلی باشد، اما انواع مرجع مجاز نیستند در حالی که مقدار می تواند از هر نوع باشد. Mapping بیشتر برای مرتبط کردن آدرس منحصر به فرد اتریوم با نوع ارزش مرتبط استفاده می شوند.Mapping در زبان های دیگر مانند پایتون با اسم dictionary و در زبان جاوا با اسم Map نامگذاری شده است.هر نوع متغیر دیگری که یک نوع کلید و یک نوع مقدار را بپذیرد، Mapping نامیده می شود.

قبل از مطالعه مقاله Mapping در سالیدیتی توصیه می کنیم مقالات و محتواهای آموزش زبان سالیدیتی را هم که در بخش زیر قرار گرفته مطالعه نمایید.

  1. چگونه یک برنامه نویس سالیدیتی شویم؟
  2. مزایای یادگیری برنامه نویسی سالیدیتی
  3. کسب درآمد دلاری با قرارداد هوشمند
  4. دستورات شرطی در سالیدیتی
  5. حلقه های تکرار در سالیدیتی
  6. مدیریت خطا در سالیدیتی
  7. ساختار در برنامه نویسی سالیدیتی
  8. دستور Enums در برنامه نویسی سالیدیتی

سینتکس Mapping در سالیدیتی

Mapping (نقشه ها) با سینتکس “mapping(keyType => valueType)” ایجاد می شوند و مانند هر نوع متغیر دیگری در Solidity تعریف می شوند

mapping(key => value) <access specifier> <name>;

_KeyType – می تواند هر نوع داخلی به اضافه بایت و رشته باشد که به uint، bool یا address ترجمه می شود.همچنین نمی تواند array , struct , enum یا Mapping باشد.

_ValueType – می تواند هر نوع باشد. این باعث می شود که نگاشت ها بسیار منعطف و برای استفاده راحت باشند.

مشاهده  ماشین مجازی اتریوم چیست؟

Mapping در سالیدیتی

همچنین می توانید از نگاشت تو در تو به روش زیر استفاده کنید:

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 اضافه کنیم

مشاهده  بلاک چین هایی که از سالیدیتی استفاده می کنند

مثال: در مثال زیر، قرارداد 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

منابع مقاله Mapping در سالیدیتی

وب سایت : geeksforgeeks – tutorialspoint

دیدگاه خود را اینجا قرار دهید

نشانی ایمیل شما منتشر نخواهد شد.

برچسب های محبوب

آموزش برنامه نویسی سالیدیتی آموزش سالیدیتی آموزش قرارداد هوشمند اجزای قرارداد هوشمند ارزدیجیتال ADA ارز دیجیتال اتریوم ارزهای متاورسی الگوریتم اثبات کار الگوریتم اجماع امنیت کیف پول ارزدیجیتال اهمیت قرارداد هوشمند برنامه نویس سالیدیتی برنامه نویسی NFT برنامه نویسی اتریوم برنامه نویسی بلاکچین برنامه نویسی ریمیکس برنامه نویسی سالیدیتی برنامه نویسی قرارداد هوشمند بلاکچین بلاک چین اتریوم بهترین ارزهای دیجیتال ترافل توسعه دهنده سالیدیتی صرافی متمرکز صرافی های ارزدیجیتال صرافی‌ غیرمتمرکز قرارداد هوشمند ماشین مجازی متاورس مزایای قرارداد هوشمند معایب صرافی ارزدیجیتال نوشتن سیستم رای گیری با سالیدیتی نوشتن قرارداد هوشمند واقعیت مجازی متاورس وام در ارزدیجیتال ویژگی‌های اتریوم پلتفرم های ارزدیجیتال پیش نیاز قرارداد هوشمند کاربرد قراردادهای هوشمند کاربرد قرارداد هوشمند کد نویسی سالیدیتی کسب درآمد با قرارداد هوشمند کسب درآمد در متاورس کیف پول ارزدیجیتال کیف پول الکترونیکی