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)

目录
相关文章
|
3月前
|
小程序
小程序for循环中key值的作用?
小程序for循环中key值的作用?
|
8月前
|
存储 SQL API
如何判定 EVM 合约的类型
通过使用正确的API,可以轻松获取与合约地址相关的ERC20代币的所有转账记录。通过创建账户、编写使用API的脚本并使用getTokenTransfers函数,您可以访问和分析有关ERC20代币的有价值的转账数据。
96 0
如何判定 EVM 合约的类型
|
8月前
|
编译器 程序员 Go
Go指针VS值的方法规则
Go指针VS值的方法规则
|
10月前
|
JavaScript 前端开发
javascript:将数组转为字符串通过判断包含字段进行状态判断的解决方案
javascript:将数组转为字符串通过判断包含字段进行状态判断的解决方案
32 0
|
11月前
|
安全
运算符:指数-链判断-Null判断-逻辑赋值
运算符:指数-链判断-Null判断-逻辑赋值
54 0
|
12月前
|
区块链
ERC20代币合约开发规则详解(源码示例)
ERC20代币合约是一个遵循ERC20标准的代币合约,它实现了代币转移、代币冻结、代币解锁等功能。作为一个通用的标准,ERC20代币合约可以被广泛应用于各种去中心化交易所、钱包、ICO等场景。
|
Go
go的方法值和方法表达式
go的方法值和方法表达式
76 0
|
存储 编译器 Go
这个代码竟然报错了?Go 的不可寻址值了解下
  Dave Cheney 在 Twitter 上发布过一个 Go 的小测验,和往常一样,我从中学到了一些有趣的东西。让我们从他的推文开始:   #golang 小测验:该程序打印什么?   package main   import (   "crypto/sha1"   "fmt"   )   func main() {   input := []byte("Hello, playground")   hash := sha1.Sum(input)[:5]   fmt.Println(hash)   }   令我惊讶的是
112 0
|
JavaScript 测试技术 区块链
十步搞定HelloWorld--部署和测试Solidity第一个合约
十步搞定HelloWorld--部署和测试Solidity第一个合约
216 0
十步搞定HelloWorld--部署和测试Solidity第一个合约
|
区块链
solidity智能合约如何判断地址为0或空
solidity智能合约如何判断地址为0或空
384 0