如何在 Solidity 中初始化映射,最佳实践是什么?
How to initialize a mapping in Solidity, what is the best practice?
我想在智能合约的声明行中初始化我的映射。我想知道最佳做法是什么?我尝试了以下方法,但 Remix 给我错误:
mapping(address _addr) public view myMap = [ addr-1 : true, addr-2 : false, addr-3 : true ];
您需要先声明变量,然后在不同的行上为其赋值。
pragma solidity ^0.8;
contract MyContract {
mapping(address => bool) public myMap;
constructor() {
myMap[address(0x123)] = true;
myMap[address(0x456)] = false;
myMap[address(0x789)] = true;
}
}
很遗憾,你不能。有关原因的详细信息,请参阅 Solidity 文档。您唯一的选择是遍历键。
如果您事先不知道密钥集,则必须将密钥保存在合同中的单独数组中。
我想在智能合约的声明行中初始化我的映射。我想知道最佳做法是什么?我尝试了以下方法,但 Remix 给我错误:
mapping(address _addr) public view myMap = [ addr-1 : true, addr-2 : false, addr-3 : true ];
您需要先声明变量,然后在不同的行上为其赋值。
pragma solidity ^0.8;
contract MyContract {
mapping(address => bool) public myMap;
constructor() {
myMap[address(0x123)] = true;
myMap[address(0x456)] = false;
myMap[address(0x789)] = true;
}
}
很遗憾,你不能。有关原因的详细信息,请参阅 Solidity 文档。您唯一的选择是遍历键。
如果您事先不知道密钥集,则必须将密钥保存在合同中的单独数组中。