【问题标题】:How to initialize a mapping in Solidity, what is the best practice?如何在 Solidity 中初始化映射,最佳实践是什么?
【发布时间】:2021-10-16 07:51:27
【问题描述】:

我想在智能合约的声明行中初始化我的映射。我想知道最佳做法是什么?我尝试了以下方法,但 Remix 给了我错误:

mapping(address _addr) public view myMap = [ addr-1 : true, addr-2 : false, addr-3 : true ];

【问题讨论】:

    标签: solidity smartcontracts


    【解决方案1】:

    您需要先声明变量,然后在单独的行中为其赋值。

    pragma solidity ^0.8;
    
    contract MyContract {
        mapping(address => bool) public myMap;
        
        constructor() {
            myMap[address(0x123)] = true;
            myMap[address(0x456)] = false;
            myMap[address(0x789)] = true;
        }
    }
    

    【讨论】:

      【解决方案2】:

      很遗憾,你不能。有关原因的详细信息,请参阅 Solidity 文档。您唯一的选择是遍历键。

      如果您不提前知道自己的密钥集,则必须将密钥保存在合约内的单独数组中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-09
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多