Localizaciones de Datos - Almacenamiento, Memoria y Calldata
WEB3DEV Team
# Localizaciones de Datos - Almacenamiento, Memoria y Calldata
Variables son declaradas como storage, memory o calldata para especificar explícitamente la localización de los datos.
storage- es una variable de estado (almacenada en el blockchain)memory- es una variable que está en memoria y existe mientras una función es invocadacalldata- localización especial de datos que contiene argumentos de función, solamente disponible para funcionesexternal
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract DataLocations {
uint[] public arr;
mapping(uint => address) map;
struct MyStruct {
uint foo;
}
mapping(uint => MyStruct) myStructs;
function f() public {
// invoca _f con variables de estado
_f(arr, map, myStructs[1]);
// obtiene un struct de un mapping
MyStruct storage myStruct = myStructs[1];
// crea un struct en memoria
MyStruct memory myMemStruct = MyStruct(0);
}
function _f(
uint[] storage _arr,
mapping(uint => address) storage _map,
MyStruct storage _myStruct
) internal {
// realiza operaciones con variables storage
}
// Puedes devolver variables de memoria
function g(uint[] memory _arr) public returns (uint[] memory) {
// realiza operaciones con el arreglo de memoria
}
function h(uint[] calldata _arr) external {
// realiza operaciones con el arreglo de calldata
}
}