当值是枚举类型时,如何检查映射中是否存在键?

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}