所以我尝试创建数据结构,其中一个byte32映射到一个地址数组,每个地址映射到一个uint。
我正在考虑下面的方法,但它似乎不正确:
mapping (byte32 => mapping (address[] => uint))
如果可能的话,请帮我解决这个问题。如果问题描述不够清楚,请随时让我知道。
示例:有一个属性,它映射到所有者(address)数组(该属性的所有者),每个所有者映射到他们在该属性中拥有的股份(uint)。
发布于 2018-09-25 11:03:18
示例:有一个属性,它映射到所有者(地址)(属性的所有者)数组,每个所有者映射到他们在该属性中拥有的股份(Uint)。
实现这一点的方法如下所示:使用struct
struct Division {
address owner;
uint256 plots;
}
mapping(bytes32 => Division[]) Properties;
function addDivision(bytes32 _property, address _owner, uint256 _plots)
public returns (bool success) {
Division memory currentEntry;
currentEntry.owner = _owner;
currentEntry.plots = _plots;
Properties[_property].push(currentEntry);
return true;
}
function getPlot(bytes32 _property, address _owner) public view returns (uint) {
for(uint i = 0; i < Properties[_property].length; i++) {
if(Properties[_property][i].owner == _owner)
return Properties[_property][i].plots;
}
return 9999;
}发布于 2018-09-22 07:55:00
是的,这是可能的,这是建议的方式。
要记住的是,您不能简单地迭代项目(就像您对数组一样),但是如果您的应用程序不需要这样做,那么您就可以了。
需要考虑的另一件事是创建一个具有it和属性的struct,但是,这取决于您的特定应用程序。
https://stackoverflow.com/questions/52451864
复制相似问题