Твердость - переменные
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 - две разные переменные.