因此,我试图创建一个数据结构,其中将byte32映射到地址数组,每个地址都映射到uint。
我正在考虑以下方法,但这似乎不正确:
mapping (byte32 => mapping (address[] => uint))
如果可能,请帮助我。如果问题描述不够清楚,请随时告诉我。
示例:有一个属性,该属性映射到所有者(address
)(该属性的所有者)的数组,每个所有者都映射到他们在其中拥有的股份(uint
)属性。
答案 0 :(得分:1)
是的,这是可行的,这是建议的方法。
要记住的事情是,您不能简单地遍历所有项(就像数组一样),但是如果您的应用程序不需要这样做,那么您就可以了。
要考虑的另一件事是创建一个具有ID和属性的struct
,但这又取决于您的特定应用程序。
答案 1 :(得分:0)
示例:有一个属性,该属性映射到一个数组 owner(address)(财产的所有者),并且每个所有者都映射到 他们在该财产中拥有的股份。
一种实现此目的的方法类似于下面使用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;
}