solidity mapping值判空 地址判空
如果mapping值里面存的为struct,那么只需在struct内设置一个字段,用来表示改结构体是否已经被赋值。如果mapping的值为地址则可通过与0地址比较来判断是否优质。
前一种情况并不存在面向编程语言中的空指针异常的问题。
以下为示例代码:
pragma solidity ^0.5.10;
contract TestCheckNullStruct{
struct User{
uint name;
bool isUsed;
}
mapping(address => User) users;
mapping(uint => address) addresses;
function isExistEntry(address _addr) public view returns(bool){
return users[_addr].isUsed;
}
function isExistAddress(uint _key) public view returns(bool){
return addresses[_key] != address(0);
}
}
对于地址数组判空
mapping(uint=>address[]) choices;
if(choices[chosen].length!=0){
...;
}
其他参考:
solidity开发小结
结构体判空
字符串判空