1. 程式人生 > >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:er