Borrar una estructura personalizada

¿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, falsepara bool, y 0para inty así sucesivamente?

Respuestas (1)

podrías usar deletepara 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 ;
}
}