solidity合约访问其他合约的mapping的方式
更多区块链技术与应用分类:
错误代码
被访问合约
contract BagUserAdmin {
mapping(bytes32 => RecordBean) bagRecordOf;
}
访问合约
contract UserGiveLikes{
BagUserAdmin internal bagUserAdmin;
constructor(address BagUserAdminAddress){
bagUserAdmin = BagUserAdmin(BagUserAdminAddress);
}
// 直接去访问该合约对象的mapping
bagRecordBean = bagUserAdmin.bagRecordOf[TypeConvertUtil.stringToBytes32(_forBagid)];
}
正确引用:
contract BagUserAdmin is TableDefTools{
mapping(bytes32 => RecordBean) bagRecordOf;
function getBagValues(string _bagid) public view returns(string []){
return bagRecordOf[TypeConvertUtil.stringToBytes32(_bagid)].values;
}
}
contract UserGiveLikes{
BagUserAdmin internal bagUserAdmin;
constructor(address BagUserAdminAddress){
bagUserAdmin = BagUserAdmin(BagUserAdminAddress);
}
// 通过getter方法去访问该合约对象的mapping
bagRecordValues = bagUserAdmin.getBagValues(_forBagid);
}
本文探讨了在Solidity中,一个智能合约如何访问另一个合约内的mapping数据结构。通过直接访问和使用getter方法两种方式,详细说明了实现过程及正确引用方法。
972

被折叠的 条评论
为什么被折叠?



