solidity智能合约如何判断mapping值为空

简介: solidity智能合约如何判断mapping值为空

mapping值的判断问题

在Java这类编程语言中,我们可以获得Map里面的值然后与null或空来进行判断该key对应的值是否为空。可是在solidity中貌似并没有提供类似的判断。那么我们如果来进行mapping值的判断呢。


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);
    }
}

微信公众号

更多职场经验、认知提升等知识分享,请关注微信公众号:程序新视界(ID:ershixiongseeworld)

目录
相关文章
|
5月前
|
算法 区块链
智能合约中断言失败
智能合约中断言失败
49 6
|
6月前
|
Java 测试技术 编译器
Java的表达式合法性判断
Java的表达式合法性判断
185 1
|
存储 SQL API
如何判定 EVM 合约的类型
通过使用正确的API,可以轻松获取与合约地址相关的ERC20代币的所有转账记录。通过创建账户、编写使用API的脚本并使用getTokenTransfers函数,您可以访问和分析有关ERC20代币的有价值的转账数据。
152 0
如何判定 EVM 合约的类型
|
6月前
|
算法 搜索推荐 数据处理
值交换解析法(无第三方变量法)
值交换解析法(无第三方变量法)
44 0
|
编译器 程序员 Go
Go指针VS值的方法规则
Go指针VS值的方法规则
|
JavaScript 前端开发
javascript:将数组转为字符串通过判断包含字段进行状态判断的解决方案
javascript:将数组转为字符串通过判断包含字段进行状态判断的解决方案
52 0
|
安全
运算符:指数-链判断-Null判断-逻辑赋值
运算符:指数-链判断-Null判断-逻辑赋值
85 0
|
区块链
ERC20代币合约开发规则详解(源码示例)
ERC20代币合约是一个遵循ERC20标准的代币合约,它实现了代币转移、代币冻结、代币解锁等功能。作为一个通用的标准,ERC20代币合约可以被广泛应用于各种去中心化交易所、钱包、ICO等场景。
|
JSON JavaScript 前端开发
js中el表达式的使用和非空判断
js中el表达式的使用和非空判断
155 0
|
区块链
SOLIDITY REMIX方法传递数组参数
SOLIDITY REMIX方法传递数组参数
663 0
SOLIDITY REMIX方法传递数组参数