¿Cuál es la mejor manera de borrar un mapeo? Considere el siguiente caso:
struct user {
string name;
uint id;
bool valid;
bytes32 hash_id;
}
mapping (address => user) userRegister;
function clearStruct (address addr) constant returns (bool cleared) {
userRegister[addr].name = null;
userRegister[addr].id = null;
userRegister[addr].valid = null;
userRegister[addr].hash_id = null;
}
Estoy buscando una forma genérica de borrar estructuras. el error que veo ahora mismo en = null
:
Error: expresión principal esperada
Cualquiera que pueda sugerir, sería de gran ayuda. ¿Cuál es la única forma de convertirlos en nulos correspondientes, es decir , ''
para string
, 0x000... para bytes32
, false
para bool
, y 0
para int
y así sucesivamente?
podrías usar delete
para borrar tu mapa.
delete userRegister[addr];
propuesta:
pragma solidity ^0.4.0;
contract test {
struct user {
string name;
address add;
}
mapping (address => user) public userRegister;
function add_user (string name, address addr) {
userRegister[addr].name=name;
userRegister[addr].add=addr;
}
function clearStruct (address addr) {
delete userRegister[addr];
}
function try_it (address addr) returns (string name) {
return userRegister[addr].name ;
}
}