Solidity
有什麼方法可以檢查輸入的鍵是否在映射中具有相應的值?
假設在銀行系統中註冊了許多人(通過映射管理)
mapping (address => bool) enrolled;
只有那些在銀行註冊的人才能存款。
我可以檢查 msg.sender 是否作為上述映射中的鍵存在嗎?
映射中布爾值的預設值為
false
。如果您還false
用作跟踪系統的一部分,那麼不,您將無法判斷某個值是否已設置false
或根本未設置。為此,您可能需要第二個映射來跟踪該值之前是否已設置。
mapping (address => bool) enrolledSet;
這是涵蓋隨機訪問、計算唯一性和迭代列表的最小方法。
pragma solidity 0.5.0; contract InterableMapping { address[] public addressList; mapping(address => bool) public isAddress; function insertAddress(address customer) public { require(!isAddress[customer]); addressList.push(customer); isAddress[customer] = true; } function getAddressCount() public view returns(uint count) { return addressList.length; } }
bool
您可以通過將 設置為 false來添加軟刪除。function disableCustomer(address customer) public { require(isAddress[customer]); isAddress[customer] = false; }
在這裡查看不同的模式:Solidity 是否有很好解決且簡單的儲存模式?
希望能幫助到你。