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.