Betrachten Sie den folgenden Vertrag in 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;
}
}
In der if
obigen Anweisung, die falsch ist, möchte ich überprüfen, ob die Struktur Name
definiert ist oder sich noch im Standardwert befindet, wobei alle Felder auf Null initialisiert sind. Gibt es dafür einen Sprachoperator?
Ich würde mit:
if (reg[sender].first != "" || reg[sender].last != "") { Wurf; }
Es gibt keinen Operator, aber Sie können die Länge beider Zeichenfolgen gegen Null prüfen:
if (bytes(reg[sender].first).length != 0 || bytes(reg[sender].last).length != 0) { throw; }
Hinweis: Verwendung von ||
Verwandt:
Um diese Antwort auf die neueste Version von Solidity zu aktualisieren. Versuche Folgendes: require(reg[sender].first && reg[sender].last);