Struct در قراردادهای هوشمند سالیدیتی Solidity
ساختار (Struct) در سالیدیتی Solidity
ساختار (Struct) در قراردادهای هوشمند Solidity یا solidity structs روشی برای تعریف انواع سفارشی جدید در سالیدیتی است. در مستندات برنامه سالیدیتی، ساختارها به عنوان اشیا بدون عملکرد (objects with no functionalities) تعریف شده است اما در واقع آنها بیشتر از این هستند.
ساختارها در زبان برنامهنویسی سالیدیتی مانند زبان برنامهنویسی C، مجموعهای از متغیرها تحت یک نام واحد هستند (که میتوانند انواع مختلفی داشته باشند). این ویژگی این امکان را برای کاربران فراهم میکند که تعدادی متغیر از چند نوع را در یک نوع تعریف شده گروهبندی کنند. برای اینکه بدانید ساختار در قرارداد هوشمند سالیدیتی چگونه کار میکند با این مقاله در توکن خان همراه باشید.
قبل از مطالعه کامل مقاله “ساختار (Struct) در سالیدیتی Solidity” پیشنهاد میکنیم مقالات دیگر حوزه آموزش سالیدیتی را هم مطالعه کنید.
Mapping در قرارداد هوشمند Solidity
تابع بازگشتی Fallback Function در سالیدیتی
توسعه قرارداد هوشمند در محیط ریمیکس Remix
توابع modifiers در سالیدیتی solidity
حلقه های تکرار در سالیدیتی Solidity Loop
دستور Enums در برنامه نویسی سالیدیتی
تعریف ساختار Struct
ساختار (Struct) در قراردادهای هوشمند Solidity این امکان را برای برنامهنویس ایجاد میکند تا انواع پیچیدهتری از دادهها که دارای چندین ویژگی هستند را ایجاد کند. همچنین با ایجاد یک struct میتوان نوع داده مخصوص به خود را تعریف کرد. این قابلیت در زبان برنامهنویسی سالیدیتی به عنوان روشی مفید برای گروهبندی دادههای مرتبط با یکدیگر شناخته و استفاده میشود.
ساختارها را میتوان در خارج از یک قرارداد اعلان کرد (declar) و در قرارداد دیگری وارد کرد (import). به طور معمول از ساختار برای نمایش دادن مجموعهای از اطلاعات مرتبط با یکدیگر و پیوسته استفاده میشود. برای تعریف یک ساختار، از کلمه کلیدی struct استفاده میشود که یک نوع داده جدید را ایجاد میکند.
سینتکس (Syntax) ساختار
1 2 3 4 5 |
struct struct_name { type1 type_name_1; type2 type_name_2; type3 type_name_3; } |
یک نمونه مثال برای ساختار(Struct) در قراردادهای هوشمند Solidity
به عنوان یک مثال، فرض میکنیم که برنامهای برای پیگیری کتابهای خود در یک کتابخانه را ترتیب داده ایم. ما میخواهیم چند ویژگی مانند عنوان، نویسنده، موضوع و شناسه کتاب را برای هر کتاب پیگیری کنیم. همانطور که گفتیم از ساختار (Struct) برای نمایش مجموعهای از اطلاعات مرتبط با یکدیگر استفاده میکنیم که در این مثال همان ویژگیهایی است که قصد پیگیری آنها را برای کتابهای کتابخانه خود داریم.
-
تعریف یک Struct
برای تعریف کردن یک ساختار باید از کلمه کلیدی struct استفاده کنیم. این کلمه کلیدی یک نوع داده جدید را تعریف میکند که تعداد اعضای آن از یکی بیشتر است که در مثال مورد بحث ما به شکل زیر است:
1 2 3 4 5 |
struct Book { string title; string author; uint book_id; } |
-
دسترسی به یک Struct و متغیر آن
برای دسترسی داشتن به هر عنصر یا عضو ساختار، از عملگر نقطه (dot operator) استفاده میشود که متغیر ساختار و عنصری که ما قصد دسترسی به آن را داریم، از هم جدا میکند. عملگر دسترسی عضو (.)، به عنوان یک نقطه بین نام متغیر ساختار و عضوی از ساختار که ما میخواهیم به آن دسترسی داشته باشیم، کدگذاری میشود. از ساختار میتوان برای تعریف متغیرهای نوع ساختار استفاده کرد. در ادامه چگونگی استفاده از ساختار در یک برنامه را در یک مثال خواهید دید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // تعریف قرارداد contract test { // struct تعریف struct Book { string title; string author; uint book_id; } // state variable تعریف // Book از نوع استراکت Book book; // تعریف تابعی برای // book تعیین مقادیر اعضای function setBook() public { book = Book('Learn Java', 'TP', 1); } // تعریف تابعی برای // book استراکت id گرفتن شماره function getBookId() public view returns (uint) { return book.book_id; } } |
با امتحان کردن این کد، میتوانید به این نکته پی ببرید که ساختار (Struct) در قراردادهای هوشمند Solidity چگونه کار میکند. در این مثال دو تابع set و تابع get برای تنظیم و دریافت مقادیر عناصر ساختار که title ، author و id کتاب هستند تعریف شده است.
جمع بندی
ساختار (Struct) در قراردادهای هوشمند Solidity را میتوان در سه جمله به طور خلاصه این چنین تعریف کرد.
- شما میتوانید با ایجاد یک ساختار struct نوع داده مخصوص به خودتان را تعریف کنید.
- این ویژگی در سالیدیتی برای گروهبندی دادههای مرتبط با یکدیگر بسیار مفید است.
- ساختارها را میتوانید در خارج از یک قرارداد اعلان کنید و در قراردادی دیگر وارد کنید.
منابع معتبر مرتبط:
https://www.geeksforgeeks.org/solidity-enums-and-structs
https://jeancvllr.medium.com/solidity-tutorial-all-about-structs-b3e7ca398b1e
مطالب زیر را حتما مطالعه کنید
بررسی رفتار توابع View و Pure در سالیدیتی Solidity
توابع Payable در قراردادهای هوشمند Solidity
سالیدیتی Solidity چیست؟
سطح دسترسی Visibility در سالیدیتی Solidity
توابع Function در سالیدیتی Solidity
انواع حافظه در قرارداد هوشمند سالیدیتی
8 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
مطلب بی نظیری بود
حرف نداشت👌🏻
ایا مشاوره هم دارین برای خرید ارز؟ قیمت مشاورتون چقدره؟
خیلی ممنون از توضیحات خوبتون
بسیار گویا و شفاف بیان کردید
چه مطلب خوبی
سلام عالی بود
سلام و احترام
ممنون از همراهیتون
خوشحالم که براتون مفید بوده