در این بخش با انواع دادههای ابتدایی موجود در سالیدیتی آشنا میشیم. برای جدیدترین نسخه این محتوا میتونین به Primitive Data Types (Code Example) در Cyfrin.io مراجعه کنین.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
contract Primitives {
// نوع دادهای boolean
bool public boo = true;
/*
uint مخفف "unsigned integer" هست، یعنی اعداد صحیح غیرمنفی.
اندازههای مختلفی برای این نوع داده موجوده:
uint8 از 0 تا 2 ** 8 - 1
uint16 از 0 تا 2 ** 16 - 1
...
uint256 از 0 تا 2 ** 256 - 1
*/
uint8 public u8 = 1;
uint256 public u256 = 456;
uint256 public u = 123; // uint معادل uint256 هست.
/*
برای نوع int، اعداد منفی هم قابل قبول هستن.
مشابه uint، اندازههای مختلفی از int8 تا int256 وجود داره.
int256 از -2 ** 255 تا 2 ** 255 - 1 رو پوشش میده.
int128 از -2 ** 127 تا 2 ** 127 - 1 رو پوشش میده.
*/
int8 public i8 = -1;
int256 public i256 = 456;
int256 public i = -123; // int معادل int256 هست.
// حداقل و حداکثر مقدار برای int
int256 public minInt = type(int256).min;
int256 public maxInt = type(int256).max;
// نوع دادهای آدرس
address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
/*
نوع داده byte در سالیدیتی نمایانگر یک توالی از بایتهاست.
دو نوع برای این داده موجوده:
- آرایههای بایت با اندازه ثابت
- آرایههای بایت با اندازه پویا
عبارت bytes به یک آرایه پویا از بایتها اشاره میکنه
و در واقع همون shorthand برای byte[] هست.
*/
bytes1 a = 0xb5; // [10110101]
bytes1 b = 0x56; // [01010110]
// مقادیر پیشفرض
// متغیرهایی که مقدارههی نشن، مقدار پیشفرض دارن:
bool public defaultBoo; // مقدار پیشفرض: false
uint256 public defaultUint; // مقدار پیشفرض: 0
int256 public defaultInt; // مقدار پیشفرض: 0
address public defaultAddr; // مقدار پیشفرض: 0x0000000000000000000000000000000000000000
}
چند تا توضیح برای درک بهتر:
- boolean: نوع دادهای که فقط دو مقدار
true
یاfalse
رو میپذیره. - uint و int: اعداد صحیح، با این تفاوت که
uint
فقط غیرمنفیه، اماint
میتونه منفی باشه. - address: آدرسهایی که برای شناسایی حسابها یا قراردادها در بلاکچین استفاده میشه.
- bytes: برای کار با دادههای باینری مثل رشتههای بایت استفاده میشه.
این کد برای شروع و فهم اولیه انواع دادهها در سالیدیتی مثال خوبیه. امتحانش کن و ببین چطور کار میکنه!