Solidez - Variables

La solidez admite tres tipos de variables.

  • State Variables - Variables cuyos valores se almacenan permanentemente en un almacén de contrato.

  • Local Variables - Variables cuyos valores están presentes hasta que se ejecuta la función.

  • Global Variables - Existen variables especiales en el espacio de nombres global utilizado para obtener información sobre la cadena de bloques.

La solidez es un lenguaje de tipo estático, lo que significa que el tipo de variable local o estatal debe especificarse durante la declaración. Cada variable declarada siempre tiene un valor predeterminado en función de su tipo. No existe el concepto de "indefinido" o "nulo".

Variable de estado

Variables cuyos valores se almacenan permanentemente en un almacenamiento de contrato.

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

Variable local

Variables cuyos valores están disponibles solo dentro de una función donde está definida. Los parámetros de la función son siempre locales para esa función.

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

Ejemplo

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

Ejecute el programa anterior siguiendo los pasos proporcionados en el capítulo Primera aplicación de Solidity.

Salida

0: uint256: 10

Variables globales

Estas son variables especiales que existen en el espacio de trabajo global y brindan información sobre la cadena de bloques y las propiedades de la transacción.

Nombre Devoluciones
blockhash (uint blockNumber) devuelve (bytes32) Hash del bloque dado: solo funciona para los 256 bloques más recientes, excluyendo los actuales
block.coinbase (dirección pagadera) Dirección actual del minero del bloque
block.dificultad (uint) Dificultad del bloque actual
block.gaslimit (uint) Límite de gas del bloque actual
block.number (uint) Número de bloque actual
block.timestamp (uint) Marca de tiempo del bloque actual como segundos desde la época de Unix
gasleft () devuelve (uint256) Gas restante
msg.data (bytes calldata) Datos de llamada completos
msg.sender (dirección pagadera) Remitente del mensaje (llamante actual)
msg.sig (bytes4) Primeros cuatro bytes de los datos de llamada (identificador de función)
msg.value (uint) Número de wei enviados con el mensaje
ahora (uint) Marca de tiempo del bloque actual
tx.gasprice (uint) Precio del gas de la transacción
tx.origin (dirección pagadera) Remitente de la transacción

Nombres de variables de solidez

Al nombrar sus variables en Solidity, tenga en cuenta las siguientes reglas.

  • No debe utilizar ninguna de las palabras clave reservadas de Solidity como nombre de variable. Estas palabras clave se mencionan en la siguiente sección. Por ejemplo, los nombres de variable booleana o de ruptura no son válidos.

  • Los nombres de las variables de solidez no deben comenzar con un número (0-9). Deben comenzar con una letra o un carácter de subrayado. Por ejemplo, 123test es un nombre de variable no válido, pero _123test es válido.

  • Los nombres de las variables de solidez distinguen entre mayúsculas y minúsculas. Por ejemplo, Nombre y nombre son dos variables diferentes.