آرایه(Array) در قرارداد هوشمند Solidity
آرایه(Array) در قرارداد هوشمند Solidity به این صورت است که به جای ایجاد متغیرهای مختلف از یک نوع داده، می توانید یک آرایه برای ذخیره لیستی از عناصر ایجاد کنید. آرایه ها ساختارهای داده ای هستند که مجموعه ای از اقلام از همان نوع داده را در یک مکان اختصاص داده شده ذخیره می کنند.
سینتکس اصلی برای ایجاد یک آرایه در قرارداد هوشمند به شرح زیر است:
pragma solidity ^0.6.0;
contract samplyArray {
uint[] intergerArray; //sample array of integers
bool[] boolArray; //sample array of booleans
address[] addressArray; //sample array of address
سالیدیتی(Solidity) از آرایه هایی با اندازه های ثابت یا پویا پشتیبانی می کند. آرایه ها دارای یک مکان حافظه پیوسته هستند که به این معنی است که کمترین index با اولین عنصر مرتبط است و بالاترین index نشان دهنده آخرین عنصر است.
در مثال زیر آلیس اولین آیتم در آرایه است و مکان index 0 به آن اختصاص داده شده است و سیندی آخرین مورد در آرایه در مکان index 2 است.
VALUE | ALICE | BOB | CINDY |
---|---|---|---|
Index | 0 | 1 | 2 |
کد زیر نحوه ایجاد یک آرایه از نوع پویا و ثابت را توضیح می دهد.
pragma solidity ^0.6.0;
contract samplyArray {
uint[] public myArray; //this is a dynamic array of type uint
uint[] public myArray2 = [1, 2, 3]; //this is a dynamic array with 1, 2 and 3 as default values
uint[10] public myFixedSizeArray; //this is a fixed size array of type uint
آرایه ها دارای توابعی هستند که به شما امکان اضافه کردن، به روز رسانی و حذف اطلاعات را می دهد.
- Push – یک عنصر را به انتهای آرایه اضافه می کند
- Pop – آخرین عنصر آرایه را حذف می کند
- Length – طول آرایه را بدست می آورد. به عنوان مثال چند آیتم در آرایه وجود دارد
- delete – به شما امکان می دهد یک مورد را در یک مکان خاص در آرایه حذف کنید.
کد زیر می توانید کد این دستورات را ببینید:
//this will add i to the end of myArray
function pushistoAdd(uint i) public {
myArray.push(i);
}
//returns the value in the specified position of the array
function getIteminArray(uint index) public view returns (uint) {
myArray[index];
}
//this will update an item in the array
function updatethearray(uint locationinarray, uint valuetochangeto) public {
myArray[locationinarray] = valuetochangeto;
}
//this is to delete an item stored at a specific index in the array.
//Once you delete the item the value in the array is set back to 0 for a uint.
function remove(uint index) public {
delete myArray[index];
}
علاوه بر این:
- برای اعلام یک آرایه پویا از [ ]
- برای اعلام یک آرایه ثابت از [n] استفاده کنید که n = تعداد آیتم هایی که در آرایه می خواهید
- آرایه از index 0 شروع می شود
- عناصر موجود در آرایه uint به مقدار پیش فرض خود 0 مقداردهی اولیه می شوند.
- اگر سعی کنید موردی را که در آرایه نیست بازیابی کنید، گزارش یک کد عملیات نامعتبر چاپ می کند.
در زیر آرایه های نمونه در قرارداد هوشمند Solidity آمده است. قرارداد شامل تمام ویژگیهای آرایه اولیه است که برای شروع به آن نیاز دارید. می توانید از این به عنوان یک نقطه مرجع برای ایجاد آرایه های خود در یک قرارداد هوشمند استفاده کنید.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.6.0;
contract samplyArray {
uint[] public myArray; //this is a dynamic array of type uint
uint[] public myArray2 = [1, 2, 3]; //this is a dynamic array with 1, 2 and 3 as default values
uint[10] public myFixedSizeArray; //this is a fixed size array of type uint
uint[] intergerArray; //sample showing initialization of an array of integers
bool[] boolArray; //sample showing initialization of an array of booleans
address[] addressArray; //sample showing initialization of an array of address etc.
//this will add i to the end of myArray
function pushistoAdd(uint i) public {
myArray.push(i);
}
//returns the value in the specified position of the array
function getIteminArray(uint index) public view returns (uint) {
myArray[index];
}
//this will update an item in the array
function updatethearray(uint locationinarray, uint valuetochangeto) public {
myArray[locationinarray] = valuetochangeto;
}
//this is to delete an item stored at a specific index in the array.
//Once you delete the item the value in the array is set back to 0 for a uint.
function remove(uint index) public {
delete myArray[index];
}
//this will return the length of myArray
function getLength() public view returns (uint) {
return myArray.length;
}
}
اگر یک آیتم را در وسط یک آرایه حذف کنید، مکان آرایه همچنان اشغال شده است. بنابراین برای اینکه آرایه ها منظم و فشرده نگه داشته شوند، آیتم را در انتهای آرایه خود به موقعیت موردی که حذف می کنید منتقل کنید. به عنوان مثال:
- آرایه [1، 2، 3، 4]
- بیایید 2 را حذف کنیم
- ما با [1، 0، 3، 4] باقی مانده ایم
- برای فشرده نگه داشتن آرایه، آیتم انتهای آرایه را به موقعیت 1 ببرید
- [1، 4، 3]
function remove(uint index) public {
//myArray[myArray.length-1] will return the last element of an array so this complete statement will get the last item in the array and put it in the position that we are removing which is myArray[index].
myArray[index] = myArray[myArray.length-1] ;
//then we remove the last element of the array
myArray.pop();
در صورتی که تجربه خاصی در خصوص برنامهنویسی ندارید میتوانید از دورههای رایگان سایت ما “فرازمان“، استفاده کنید. همچنین اگر به دورههای پیشرفتهتری در این خصوص نیاز داشته باشید، ما با آموزش های حرفه ای که در سایتمان قرار دادیم می توانید به سطح دلخواهتان با تلاش و پشتکار برسید.
نقشه راه
راهنما آکادمی فرازمان
برای یادگیری برنامه نویسی بلاکچین…
در این باره بیشتر بخوانید
دیدگاهتان را بنویسید