solidity智能合約如何判斷mapping值爲空

mapping值的判斷問題

在Java這類編程語言中,咱們能夠得到Map裏面的值而後與null或空來進行判斷該key對應的值是否爲空。但是在solidity中貌似並無提供相似的判斷。那麼咱們若是來進行mapping值的判斷呢。編程

mapping值的判斷解決方案

若是mapping值裏面存的爲struct,那麼只需在struct內設置一個字段,用來表示改結構體是否已經被賦值。若是mapping的值爲地址則可經過與0地址比較來判斷是否優質。微信

前一種狀況並不存在面向編程語言中的空指針異常的問題。app

如下爲示例代碼:編程語言

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:ershixiong_see_world)ui

相關文章
相關標籤/搜索