Solidité - Variables

Solidity prend en charge trois types de variables.

  • State Variables - Variables dont les valeurs sont stockées en permanence dans un stockage de contrat.

  • Local Variables - Variables dont les valeurs sont présentes jusqu'à ce que la fonction s'exécute.

  • Global Variables - Des variables spéciales existent dans l'espace de noms global utilisé pour obtenir des informations sur la blockchain.

Solidity est un langage typé statiquement, ce qui signifie que l'état ou le type de variable locale doit être spécifié lors de la déclaration. Chaque variable déclarée a toujours une valeur par défaut basée sur son type. Il n'y a pas de concept de "non défini" ou "nul".

État variable

Variables dont les valeurs sont stockées en permanence dans un stockage de contrat.

pragma solidity ^0.5.0;
contract SolidityTest {
   uint storedData;      // State variable
   constructor() public {
      storedData = 10;   // Using State variable
   }
}

Variable locale

Variables dont les valeurs ne sont disponibles que dans une fonction où elle est définie. Les paramètres de fonction sont toujours locaux à cette fonction.

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
   }
}

Exemple

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
   }
}

Exécutez le programme ci-dessus en suivant les étapes fournies dans le chapitre Application Solidity First .

Production

0: uint256: 10

Variables globales

Ce sont des variables spéciales qui existent dans l'espace de travail global et fournissent des informations sur la blockchain et les propriétés de transaction.

Nom Retour
blockhash (uint blockNumber) renvoie (octets32) Hash du bloc donné - ne fonctionne que pour 256 blocs les plus récents, à l'exclusion des blocs actuels
block.coinbase (adresse payable) Adresse actuelle du mineur de bloc
bloquer la difficulté (uint) Difficulté actuelle du bloc
block.gaslimit (uint) Limite de gaz de blocage actuelle
block.number (uint) Numéro de bloc actuel
block.timestamp (uint) Horodatage du bloc actuel en secondes depuis l'époque Unix
gasleft () renvoie (uint256) Gaz restant
msg.data (octets de données d'appel) Données d'appel complètes
msg.sender (adresse payable) Expéditeur du message (appelant actuel)
msg.sig (octets4) Quatre premiers octets des données d'appel (identificateur de fonction)
msg.value (uint) Nombre de wei envoyés avec le message
maintenant (uint) Horodatage du bloc actuel
tx.gasprice (uint) Prix ​​du gaz de la transaction
tx.origin (adresse payable) Expéditeur de la transaction

Noms des variables de solidité

Lorsque vous nommez vos variables dans Solidity, gardez à l'esprit les règles suivantes.

  • Vous ne devez utiliser aucun des mots clés réservés Solidity comme nom de variable. Ces mots-clés sont mentionnés dans la section suivante. Par exemple, les noms de variable break ou booléenne ne sont pas valides.

  • Les noms de variables de solidité ne doivent pas commencer par un chiffre (0-9). Ils doivent commencer par une lettre ou un caractère de soulignement. Par exemple, 123test est un nom de variable non valide mais _123test est un nom valide.

  • Les noms des variables Solidity sont sensibles à la casse. Par exemple, le nom et le nom sont deux variables différentes.