Solidność - zmienne
Solidność obsługuje trzy typy zmiennych.
State Variables - Zmienne, których wartości są trwale przechowywane w magazynie kontraktowym.
Local Variables - Zmienne, których wartości są obecne do momentu wykonania funkcji.
Global Variables - W globalnej przestrzeni nazw istnieją zmienne specjalne używane do uzyskiwania informacji o łańcuchu bloków.
Solidity to język typowany statycznie, co oznacza, że podczas deklaracji należy określić stan lub typ zmiennej lokalnej. Każda zadeklarowana zmienna zawsze ma wartość domyślną zależną od jej typu. Nie ma pojęcia „undefined” lub „null”.
Zmienna stanu
Zmienne, których wartości są trwale przechowywane w magazynie kontraktowym.
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10; // Using State variable
}
}
Zmienna lokalna
Zmienne, których wartości są dostępne tylko w ramach funkcji, w której została zdefiniowana. Parametry funkcji są zawsze lokalne dla tej funkcji.
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
}
}
Przykład
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
}
}
Uruchom powyższy program, wykonując kroki opisane w rozdziale Solidity First Application .
Wynik
0: uint256: 10
Zmienne globalne
Są to specjalne zmienne, które istnieją w globalnym obszarze roboczym i dostarczają informacji o łańcuchu bloków i właściwościach transakcji.
Nazwa | Zwroty |
---|---|
blockhash (uint blockNumber) zwraca (bytes32) | Hash danego bloku - działa tylko dla 256 ostatnich, wyłączając bieżące, bloków |
block.coinbase (adres płatny) | Aktualny adres górnika |
block.difficulty (uint) | Aktualny poziom trudności bloku |
block.gaslimit (uint) | Obecny limit gazu blokowego |
block.number (uint) | Aktualny numer bloku |
block.timestamp (uint) | Bieżący znacznik czasu bloku w sekundach od epoki unixowej |
gasleft () zwraca (uint256) | Pozostały gaz |
msg.data (bajty calldata) | Pełne dane połączeń |
msg.sender (adres płatny) | Nadawca wiadomości (aktualnie dzwoniący) |
msg.sig (bajty4) | Pierwsze cztery bajty calldata (identyfikator funkcji) |
msg.value (uint) | Liczba wei wysłanych z wiadomością |
teraz (uint) | Aktualny czas bloku |
tx.gasprice (uint) | Cena gazu w transakcji |
tx.origin (adres płatny) | Nadawca transakcji |
Nazwy zmiennych trwałości
Podczas nazywania zmiennych w Solidity pamiętaj o następujących zasadach.
Nie należy używać żadnych zastrzeżonych słów kluczowych Solidity jako nazwy zmiennej. Te słowa kluczowe są wymienione w następnej sekcji. Na przykład nazwy zmiennych typu break lub boolean są nieprawidłowe.
Nazwy zmiennych solidity nie powinny zaczynać się od cyfry (0-9). Muszą zaczynać się od litery lub znaku podkreślenia. Na przykład 123test jest nieprawidłową nazwą zmiennej, ale _123test jest prawidłową.
W nazwach zmiennych Solidity rozróżniana jest wielkość liter. Na przykład nazwa i nazwa to dwie różne zmienne.