有没有实际的例子展示Solidity中嵌套映射的应用? 昨天我在处理映射函数时,发现了很多简单映射的实际应用,但并没有看到嵌套映射的应用。请帮忙。 点击此处查看图片
有没有实际的例子展示Solidity中嵌套映射的应用? 昨天我在处理映射函数时,发现了很多简单映射的实际应用,但并没有看到嵌套映射的应用。请帮忙。 点击此处查看图片
一个非常普遍的情况是在ERC-20和其他代币标准上的批准机制。
mapping (address => mapping (address => uint256)) approvals;
是的,今天我有一个例子: 在一个NFT合约中,我想创建一个将元数据与地址相链接的映射。所以我尝试了一下:
//create a mapping
mapping(string => address) public metadataUri;
//set a mapping
metadataUri[_uri] = _address;
但是在这种情况下,如果我有一个与相同字符串相匹配的额外地址,第一个地址将会覆盖所有后续相同字符串的地址。所以在这种情况下,我应该使用类似于以下方式的内容:
//create a mapping
mapping(string => mapping(address => uint)) public metadataUri;
//set a mapping
metadataUri[_stringURI][_address] = _uint;
是的,令牌合约中的批准机制使用嵌套映射。 ERC1155合约使用嵌套映射记录地址的余额。 第24行位于https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol