типы данных - demonoved/A-trial-run-in-solidity GitHub Wiki
// SPDX-License-Identifier: MIT
// compiler version must be greater than or equal to 0.8.20 and less than 0.9.0
pragma solidity ^0.8.23;
contract Primitives{
bool public boo = true;
/* uint означает целое число без остатка, не отрицательные числа
uint8 до 0 to 2 ** 8 - 1
uint16 до 0 to 2 ** 16 - 1
...
uint256 до 0 to 2 ** 256 - 1
*/
uint8 public u8 = 1;
uint public u256 = 456;
uint public u = 123; //uint = uint256
/* int тоже самое что и uint только отрицательное
int256 до -2 ** 255 to 2 ** 255 - 1
int128 до -2 ** 127 to 2 ** 127 - 1 */
int8 public i8 = -1;
int public i256 = 456;
int public i = -123;//int = int256
//минимальный и максимальный int
int public minInt = type(int).min;
int public maxInt = type(int).max;
address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
/* тип данных byte это последовательность байтов
фиксированный массив байтов
динамический массив байтов */
bytes1 a = 0xb5; //[10110101]
bytes1 b = 0x56; //[01010110]
//значения по умолчанию
// неназначеным переменным будут присвоены значения по умолчанию
bool public defaultboo; // false
uint public defaultuint; // 0
int public defaultint; // 0
address public defaultaddr; // 0x0000000000000000000000000000000000000000
}
-
В начале кода объявляется лицензия
SPDX-License-Identifier
, которая сообщает о том, что код распространяется под MIT лицензией. -
Далее указывается версия компилятора Solidity, использование которого является обязательным для компиляции данного контракта
pragma solidity ^0.8.23;
. Контракт совместим с версиями компилятора Solidity начиная с версии 0.8.23 до версии 0.9.0 (не включительно). -
Объявляется контракт
Primitives
, внутри которого идет демонстрация использования простых типов данных (примитивов) в Solidity, таких как булевый тип (bool), целые числа со знаком (int) и без знака (uint), адреса (address) и байтовые массивы (bytes). -
Определяются переменные разных типов с указанием их видимости как
public
, что автоматически создает getter функции для этих переменных:boo
— булевая переменная, инициализируется значениемtrue
.u8
,u256
, иu
— беззнаковые целочисленные переменные (uint
) различных размеров (8 бит, 256 бит и снова 256 бит соответственно).u
является синонимомuint256
.i8
,i256
, иi
— целочисленные переменные со знаком (int
) снова различных размеров (8 бит, 256 бит и 256 бит). Аналогичноi
равноint256
.minInt
иmaxInt
— переменные, представляющие минимально и максимально возможные значения для типаint
соответственно.addr
— переменная типаaddress
, инициализирована конкретным адресом.
-
Объявляются две байтовые переменные (
bytes1
)a
иb
, каждая инициализирована своим значением в шестнадцатеричном представлении:0xb5
и0x56
соответственно. -
Дальше идут переменные, инициализированные значениями по умолчанию
defaultboo
,defaultuint
,defaultint
,defaultaddr
. В Solidity переменные, если они не инициализированы, автоматически получают значение по умолчанию: для булевого типа —false
, для целочисленных типов —0
, для адресов —0x0000000000000000000000000000000000000000
, что означает адрес без указанного значения (пустой адрес).
Весь этот код представляет демонстрацию того, как в Solidity создаются и инициализируются различные примитивные типы данных, а также как они ведут себя по умолчанию, если не инициализированы явно. Это полезно для новичков при изучении основных концепций языка и особенностей типов данных в контексте блокчейна Ethereum.