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.