Valor predeterminado de una estructura

Considere el siguiente contrato en Solidity:

pragma solidity ^0.4.2;

contract Registry {
    struct Name {
        string first;
        string last;
    }

    mapping(address => Name) reg;

    function newName(string first, string last) {
        address sender = msg.sender;

        if(reg[sender] != 0) {
            throw;
        }

        reg[sender].first = first;
        reg[sender].last = last;
    }
}

En la ifdeclaración anterior, que es incorrecta, me gustaría verificar si la estructura Nameestá definida o aún tiene el valor predeterminado con todos los campos inicializados en cero. ¿Hay un operador de lenguaje para hacerlo?

Respuestas (3)

yo iría con:

if (reg[remitente].primero != "" || reg[remitente].último != "") {
    lanzar;
}

No hay operador, pero puede verificar la longitud de ambas cadenas contra cero:

if (bytes(reg[sender].first).length != 0 || bytes(reg[sender].last).length != 0) { throw; }

Nota: uso de ||

Relacionado:

Para actualizar esta Respuesta a la última versión de Solidity. prueba lo siguiente: require(reg[sender].first && reg[sender].last);