Skip to content

Latest commit

 

History

History
89 lines (60 loc) · 3.02 KB

arrays.md

File metadata and controls

89 lines (60 loc) · 3.02 KB
title actions material
آرایه‌ها
بررسی پاسخ
راهنمایی
editor
language startingCode answer
sol
pragma solidity ^0.4.25; contract ZombieFactory { uint dnaDigits = 16; uint dnaModulus = 10 ** dnaDigits; struct Zombie { string name; uint dna; } // start here }
pragma solidity ^0.4.25; contract ZombieFactory { uint dnaDigits = 16; uint dnaModulus = 10 ** dnaDigits; struct Zombie { string name; uint dna; } Zombie[] public zombies; }

زمانی که می‌خواین یک مجموعه از هر چیزی بسازین، می‌تونین از آرایه استفاده کنین. در سالیدیتی دو نوع آرایه وجود داره: آرایه ایستا و آرایه پویا:

// آرایه دو عنصری ایستا (طول ثابت):
uint[2] fixedArray;
// آرایه ایستای دیگری که می‌تواند ۵ رشته را نگه دارد:
string[5] stringArray;
// :آرایه پویا- طول ثابت ندارد و می‌تواند بزرگ شود
uint[] dynamicArray;

همچنین می‌تونین از آرایه‌ای از ساختارها استفاده کنین. در اینجا از ساختار Person از فصل قبل استفاده می‌کنیم:

``` Person[] people; // dynamic Array, we can keep adding to it ```

یادتونه که متغیرهای حالت به صورت دائمی در بلاکچین ذخیره می‌شدند؟ بنابراین ایجاد یک آرایه پویا از ساختارها مثل این می‌تونه برای ذخیره داده‌های ساختاریافته در قرارداد، چیزی شبیه به پایگاه داده، مفید باشه

آرایه‌های عمومی

شما می‌تونین یک آرایه را به صورت عمومی تعریف کنین، و سالیدیتی به‌صورت خودکار یک متد getter برایش ایجاد می‌کنه. سینتکس آن به صورت زیر خواهد بود:

Person[] public people;

به این ترتیب بقیه قراردادها تنها دسترسی خواندن از این آرایه را خواهند داشت. بنابراین این یک الگوی مناسب برای ذخیره داده عمومی در قرارداد شما است.

دست به کد شو

می‌خواهیم یک ارتش زامبی در اپلیکیشن‌مان داشته باشیم. و می‌خواهیم زامبی‌هامون را به رخ اپلیکیشن‌های دیگر بکشیم، بنابراین می‌خواهیم به صورت عمومی ذخیره بشن.

۱. یک آرایه عمومی Zombie به صورت ساختار ایجاد کنین، و اسمش رو zombies بگذارین.