检查实体映射中的对象是否为空
Check that object is null in solidity mapping
我有这个实体映射
mapping (string => Ticket) public myMapping;
我想检查 myMapping[key]
是否存在。我该如何检查?
没有直接的方法来检查映射是否有特定的键。但是您可以检查映射 属性 是否有价值。下面的例子认为 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;
}
}
整个存储space虚拟初始化为0(没有undefined)。
因此,您必须将该值与您的类型的 0 值进行比较。
例如,mapping[key] == address(0x0) 或 mapping[key] = bytes4(0x0).
我有这个实体映射
mapping (string => Ticket) public myMapping;
我想检查 myMapping[key]
是否存在。我该如何检查?
没有直接的方法来检查映射是否有特定的键。但是您可以检查映射 属性 是否有价值。下面的例子认为 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;
}
}
整个存储space虚拟初始化为0(没有undefined)。 因此,您必须将该值与您的类型的 0 值进行比较。 例如,mapping[key] == address(0x0) 或 mapping[key] = bytes4(0x0).