问题描述
我有项目地址,我想用一个函数创建更多项目。所以我想把这些地址保存在某个地方。 那么,这些项目地址应该不止一个key。 我还想通过项目地址访问这些密钥。
例如,我有项目 1 地址。项目1以apple的地址和Orange的地址为key 当我问“项目 1 地址有苹果地址吗?”它应该返回 True 重要的部分是我想创建一个具有功能的项目,然后按照我的说法到达它们。 我该怎么做?
解决方法
您可以将地址存储在映射中,其中键是字符串“apple”、“banana”等
如果设置了键,则不会进行验证(因为映射存储数据的方式)。但是可以验证指定键的值是否为非零(零为默认值)。
pragma solidity ^0.8.4;
contract Project {
mapping (string => address) addresses;
constructor() {
addresses['apple'] = address(0x123);
addresses['orange'] = address(0x456);
}
function hasAddressOf(string memory _identifier) external view returns (bool) {
return addresses[_identifier] != address(0);
}
}
这个合约可以部署到“项目1地址”。然后,您的客户端应用调用其 hasAddressOf()
函数以查看“项目 1 是否存储了一个 Orange 地址”。
或者甚至是更简单的 Solidity 代码,您可以在其中公开 addresses
属性。
客户端应用程序可以获取返回 addresses['apple']
的 0x123
或返回 addresses['mango']
的 0x0
的值。
pragma solidity ^0.8.4;
contract Project {
mapping (string => address) public addresses;
constructor() {
addresses['apple'] = address(0x123);
addresses['orange'] = address(0x456);
}
}