Ubicación de datos en Solidity
storage persiste, memory es borrador, calldata es la llamada.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
// Data location matters: storage persists, memory is scratch,
// calldata is the read-only bytes of the call itself.
contract LabelMaker {
string public stored;
function keep(string calldata label) external {
stored = label; // calldata copies into storage
}
function shout(string memory label)
public pure returns (string memory)
{
return string.concat(label, "!");
}
function shoutStored() external view returns (string memory) {
return shout(stored); // storage copies into memory
}
}
Cómo funciona
- Asignar
calldataa un string de estado copia a storage. - Los parámetros
memoryson copias mutables de borrador. string.concatarma strings nuevos en memoria.
Palabras clave y builtins usados aquí
contractexternalfunctionpublicreturnreturnsstring
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 551
- Tokens
- 76
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 83 segundos.
Paso 1 de 3 en Datos y gas; paso 14 de 28 en Fundamentos del lenguaje.