Твердость - переменные
Solidity поддерживает три типа переменных.
State Variables - Переменные, значения которых постоянно хранятся в контрактном хранилище.
Local Variables - Переменные, значения которых присутствуют до выполнения функции.
Global Variables - В глобальном пространстве имен существуют специальные переменные, используемые для получения информации о блокчейне.
Solidity - это язык со статической типизацией, что означает, что во время объявления необходимо указать тип состояния или локальной переменной. Каждая объявленная переменная всегда имеет значение по умолчанию в зависимости от ее типа. Нет понятия «неопределенный» или «нулевой».
Переменная состояния
Переменные, значения которых постоянно хранятся в хранилище контрактов.
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10; // Using State variable
}
}
Локальная переменная
Переменные, значения которых доступны только внутри функции, в которой они определены. Параметры функции всегда являются локальными для этой функции.
pragma solidity ^0.5.0;
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
}
}
пример
pragma solidity ^0.5.0;
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 storedData; //access the state variable
}
}
Запустите указанную выше программу, следуя инструкциям в главе « Первое приложение Solidity» .
Вывод
0: uint256: 10
Глобальные переменные
Это специальные переменные, которые существуют в глобальной рабочей области и предоставляют информацию о блокчейне и свойствах транзакции.
| имя | Возврат |
|---|---|
| blockhash (uint blockNumber) возвращает (bytes32) | Хеш данного блока - работает только с 256 последними блоками, исключая текущие. |
| block.coinbase (адрес оплачивается) | Текущий адрес майнера блока |
| block.difficulty (uint) | Текущая сложность блока |
| block.gaslimit (uint) | Текущий блок gaslimit |
| block.number (uint) | Текущий номер блока |
| block.timestamp (uint) | Временная метка текущего блока в секундах с эпохи unix |
| gasleft () возвращает (uint256) | Оставшийся газ |
| msg.data (байты calldata) | Полная Calldata |
| msg.sender (адрес оплачивается) | Отправитель сообщения (текущий абонент) |
| msg.sig (bytes4) | Первые четыре байта calldata (идентификатор функции) |
| msg.value (uint) | Количество вэй, отправленных с сообщением |
| сейчас (uint) | Отметка времени текущего блока |
| tx.gasprice (uint) | Цена сделки на газ |
| tx.origin (адрес оплачивается) | Отправитель транзакции |
Имена переменных Solidity
Называя переменные в Solidity, помните о следующих правилах.
Вы не должны использовать какие-либо зарезервированные ключевые слова Solidity в качестве имени переменной. Эти ключевые слова упоминаются в следующем разделе. Например, имена переменных break или boolean недопустимы.
Имена переменных Solidity не должны начинаться с цифры (0-9). Они должны начинаться с буквы или символа подчеркивания. Например, 123test - недопустимое имя переменной, но _123test - допустимое.
Имена переменных Solidity чувствительны к регистру. Например, Name и name - две разные переменные.