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

发布于 2025-01-23 18:59:27 字数 397 浏览 0 评论 0原文

我有以下坚固的合同。

// 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;
    }
}

我想检查是否设置了给定的地址 a 角色是设置的。但是,由于映射的默认值将为0,对于枚举而言,这意味着首先角色,我该如何完成?

I have the following contract in solidity.

// 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;
    }
}

I want to check if for a given address a Role is set or not. But since default value for mapping will be 0, and for enum it will mean first Role, how do I accomplish this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

つ低調成傷 2025-01-30 18:59:27

您可以扩展枚举以反映0个索引(默认)值为无。

enum Role{ NONE, GUARDIAN, WARD} 

You can extend the enum to reflect the 0th index (default) value as none.

enum Role{ NONE, GUARDIAN, WARD} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文