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 if
declaración anterior, que es incorrecta, me gustaría verificar si la estructura Name
está definida o aún tiene el valor predeterminado con todos los campos inicializados en cero. ¿Hay un operador de lenguaje para hacerlo?
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);