Solidity

有什麼方法可以檢查輸入的鍵是否在映射中具有相應的值?

  • November 30, 2018

假設在銀行系統中註冊了許多人(通過映射管理) 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 是否有很好解決且簡單的儲存模式?

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/63357