مشخصات مقاله
آموزش آرایه ها در سالیدیتی
آرایه یک ساختمان داده است که مجموعهای متوالی با اندازه ثابت از عناصر هم نوع را ذخیره میکند. یک آرایه برای ذخیره مجموعهای از دادهها استفاده میشود، اما اغلب مفیدتر است که آن را مجموعهای از متغیرهای یک نوع در نظر بگیریم.
بهجای اعلان تکتک متغیرها، مانند number0، number1، ... و number99، یک متغیر آرایه مانند اعداد را اعلام میکنید و از اعداد [0]، اعداد [1] و... اعداد [99] برای نمایش استفاده مینمایید.
در Solidity، یک آرایه میتواند دارای اندازه ثابت در زمان کامپایل یا اندازه پویا باشد. آرایه جهت ذخیرهسازی، میتواند انواع مختلفی از عناصر نیز داشته باشد. در مورد آرایه حافظه، نوع عنصر را نمیتوان نگاشت کرد و اگر قرار است بهعنوان پارامتر تابع استفاده شود، نوع عنصر باید از نوع ABI باشد. همه آرایهها از مکانهای حافظه بههمپیوسته تشکیل شدهاند. کمترین آدرس مربوط به اولین عنصر و بالاترین آدرس مربوط به آخرین عنصر است.
اعلان آرایهها
برای اعلان یک آرایه با اندازه ثابت در Solidity، برنامهنویس نوع و تعداد عناصر موردنیاز یک آرایه را بهصورت زیر مشخص میکند:
type arrayName [ arraySize ];
که به این آرایه تکبعدی میگویند. arraySize باید یک عدد ثابت بزرگتر از صفر باشد و نوع میتواند هر نوع داده معتبر Solidity باشد. بهعنوانمثال، برای اعلام یک آرایه 10 عنصری به نام balance و نوع uint، از عبارت زیر استفاده نمایید:
uint balance[10];
برای اعلان یک آرایه با اندازه پویا در Solidity، برنامهنویس نوع عناصر را بهصورت زیر مشخص میکند:
type[] arrayName;
مقداردهی اولیه آرایهها
میتوانید عناصر آرایه Solidity را با استفاده از یک دستور واحد بهصورت زیر مقداردهی اولیه نمایید:
uint balance[3] = [1, 2, 3];
تعداد مقادیر بین پرانتز [] نمیتواند بزرگتر از تعداد عناصری باشد که برای آرایه بین پرانتز [] اعلان میکنیم. اگر اندازه آرایه را حذف کنید، یک آرایه بهاندازه کافی بزرگ برای نگهداشتن مقدار اولیه ایجاد میشود؛ بنابراین، اگر کد زیر را بنویسید:
uint balance[] = [1, 2, 3];
دقیقاً همان آرایهای را که در مثال قبلی داشتید، ایجاد خواهید کرد.
balance[2] = 5;
دستور بالا به عنصر شماره 3 در آرایه مقدار 5 را اختصاص میدهد.
ایجاد آرایهها با حافظه پویا
آرایههای حافظه پویا با استفاده از کلمه کلیدی جدید ایجاد میشوند.
uint size = 3; uint balance[] = new uint[](size);
دسترسی به عناصر آرایه
یک عنصر با فهرستکردن نام آرایه قابلدسترسی است. این کار با قراردادن شاخص عنصر در داخل پرانتز بعد از نام آرایه انجام میشود. بهعنوانمثال:
uint salary = balance[2];
عبارت بالا عنصر سوم را از آرایه میگیرد و مقدار را به متغیر حقوق و دستمزد اختصاص میدهد. در ادامه یک مثال آورده شده است که از تمام سه مفهوم فوق استفاده میکند. (اعلان، تخصیص و دسترسی به آرایهها)
length
lengthاندازه آرایه را برمیگرداند. طول را میتوان برای تغییر اندازه آرایه پویا استفاده و آن را تنظیم کرد.push
push اجازه میدهد تا یک عنصر را در پایان به یک آرایه ذخیرهسازی پویا اضافه کنیم. همچنین طول جدید آرایه را برمیگرداند.
کد زیر را اجرا نمایید تا متوجه شوید که آرایهها در Solidity چگونه کار میکنند.
pragma solidity ^0.5.0; contract test { function testArray() public pure{ uint len = 7; //dynamic array uint[] memory a = new uint[](7); //bytes is same as byte[] bytes memory b = new bytes(len); assert(a.length == 7); assert(b.length == len); //access array variable a[6] = 8; //test array variable assert(a[6] == 8); //static array uint[3] memory c = [uint(1) , 2, 3]; assert(c.length == 3); } }