solidity智慧合約如何判斷mapping值為空
阿新 • • 發佈:2019-08-11
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