- Envoy-VC / 30-Days-of-Solidity
- Пошаговое руководство 30 Days of Solidity для изучения разработки смарт-контрактов.
- Содержание
- 30 Days Of Solidity: Лицензии и Pragma
- Переменные
- Переменная состояния
- Локальная переменная
- Глобальные переменные
- Сферы действия переменных
- Envoy-VC / 30-Days-of-Solidity
- Пошаговое руководство 30 Days of Solidity для изучения разработки смарт-контрактов.
Envoy-VC / 30-Days-of-Solidity
Пошаговое руководство 30 Days of Solidity для изучения разработки смарт-контрактов.
Содержание
- День 1 — Лицензии и прагма
- День 2 — Комментарии
- День 3 — Инициализация базового контракта
- День 4 — Переменные и области действия
- День 5 — Операторы
- День 6 — Типы
- День 7 — Функции
- День 8 — Циклы
- День 9 — Принятие решений
- День 10 — Массивы
- День 11 — Операции с массивами
- День 12 — Перечисления
- День 13 — Структуры
- День 14 — Сопоставления
- День 15 — Единицы
- День 16 — Утверждение требования
- День 17 — Утверждение
- День 18 — Утверждение возврата
- День 19 — Модификаторы функций
- День 20 Конструкторы
- День 21 Одноуровневое наследование
- День 22 Многоуровневое наследование
- День 23 Иерархическое наследование
- День 24 Множественное наследование
- День 25 Возврат и функция получения
- День 26 События и хэширование
- День 27 Библиотеки
- День 28 Абстрактный контракт и интерфейс
- День 29 Сборка
- День 30 Полиморфизм
30 Days Of Solidity: Лицензии и Pragma
Автор…
Это день 4
из серии 30
в Solidity.
Сегодня я узнал о переменных и диапазонах в Solidity.
Переменные
Solidity поддерживает три типа переменных.
-
State Variables
— переменные, значения которых постоянно хранятся в контрактном хранилище. -
Local Variables
— переменные, значения которых присутствуют до выполнения функции. -
Global Variables
— специальные переменные, существующие в глобальном пространстве имен, используемые для получения информации о блокчейне.
При присвоении имен переменным в Solidity следует помнить о следующих правилах.
- Вы не должны использовать ни одно из зарезервированных ключевых слов Solidity в качестве имени переменной. Например, имена переменных типа break или boolean недопустимы.
- Имена переменных Solidity не должны начинаться с цифр (0-9). Они должны начинаться с буквы или символа подчеркивания. Например, 123test — недопустимое имя переменной, но _123test — допустимое.
- Имена переменных Solidity чувствительны к регистру. Например, Name и name — это две разные переменные.
Переменная состояния
Переменные, значения которых постоянно хранятся в контрактном хранилище.
pragma solidity ^0.8.6;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10; // Using State variable
}
}
Локальная переменная
Переменные, значения которых доступны только в функции, где они определены. Параметры функции всегда локальны для этой функции.
pragma solidity ^0.8.6;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
StoredData = 10;
}
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint Result = a + b;
return Result; //access the local variable
}
}
Глобальные переменные
Это специальные переменные, которые существуют в глобальном рабочем пространстве и предоставляют информацию о свойствах блокчейна и транзакций.
Имя | Возвращает |
---|---|
blockhash(uint blockNumber) возвращает (bytes32) | Хеш данного блока — работает только для 256 последних, исключая текущий, блоков |
block.coinbase (оплачиваемый адрес) | Адрес майнера текущего блока |
block.difficulty (uint) | Сложность текущего блока |
block.gaslimit (uint) | Текущий лимит газа в блоке |
Подробнее о глобальных переменных здесь
Сферы действия переменных
Область действия локальных переменных ограничена функцией, в которой они определены, но переменные состояния могут иметь три типа областей действия.
eg-
pragma solidity ^0.8.6;
contract C {
uint public data = 30;
uint internal iData= 10;
function x() public returns (uint) {
data = 3; // internal access
return data;
}
}
contract Caller {
C c = new C();
function f() public view returns (uint) {
return c.data(); //external access
}
}
contract D is C {
function y() public returns (uint) {
iData = 3; // internal access
return iData;
}
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return storedData; //access the state variable
}
}
Envoy-VC / 30-Days-of-Solidity
Пошаговое руководство 30 Days of Solidity для изучения разработки смарт-контрактов.