【发布时间】:2020-04-14 07:55:21
【问题描述】:
我有这个可靠性映射
mapping (string => Ticket) public myMapping;
我想检查myMapping[key] 是否存在。我该如何检查?
【问题讨论】:
我有这个可靠性映射
mapping (string => Ticket) public myMapping;
我想检查myMapping[key] 是否存在。我该如何检查?
【问题讨论】:
整个存储空间虚拟初始化为0(没有未定义)。 因此,您必须将该值与您的类型的 0 值进行比较。 例如,mapping[key] == address(0x0) 或 mapping[key] = bytes4(0x0)。
【讨论】:
没有直接的方法来检查映射是否具有特定的键。但是您可以检查映射属性是否具有价值。以下示例认为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;
}
}
【讨论】: