我有这种坚固性映射
mapping (string => Ticket) public myMapping;
我想检查myMapping[key]
是否存在。我该如何检查?
答案 0 :(得分:2)
整个存储空间实际上都初始化为0(没有未定义)。 因此,您必须将值与类型的0值进行比较。 例如,mapping [key] ==地址(0x0)或mapping [key] = bytes4(0x0)。
答案 1 :(得分:1)
没有直接方法可以检查映射是否具有特定键。但是您可以检查映射属性是否具有值。以下示例认为Ticket
是具有某些属性的结构。
pragma solidity >=0.4.21 <0.6.0;
contract Test {
struct Ticket {
uint seatNumber;
}
mapping (string => Ticket) myMapping;
function isExists(string memory key) public view returns (bool) {
if(myMapping[key].seatNumber != 0){
return true;
}
return false;
}
function add(string memory key, uint seatNumber) public returns (bool){
myMapping[key].seatNumber = seatNumber;
return true;
}
}