当值是枚举类型时,如何检查映射中是否存在键?
How to make check if a key exists in mapping or not in Solidity when value is of type enum?
我有以下合约。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract PocketCrypto {
enum Role{ GUARDIAN, WARD}
mapping(address => Role) public role;
function setRole(Role _role) public {
role[msg.sender] = _role;
}
}
我想检查给定的 address
是否设置了 Role
。但是由于映射的默认值将为 0,而对于枚举,它将首先表示 Role
,我该如何完成此操作?
您可以扩展枚举以将第 0 个索引(默认)值反映为 none。
enum Role{ NONE, GUARDIAN, WARD}
我有以下合约。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract PocketCrypto {
enum Role{ GUARDIAN, WARD}
mapping(address => Role) public role;
function setRole(Role _role) public {
role[msg.sender] = _role;
}
}
我想检查给定的 address
是否设置了 Role
。但是由于映射的默认值将为 0,而对于枚举,它将首先表示 Role
,我该如何完成此操作?
您可以扩展枚举以将第 0 个索引(默认)值反映为 none。
enum Role{ NONE, GUARDIAN, WARD}