solidity使用mapping+struct复杂数据结构

solidity中使用mapping+struct的复杂数据结构时,遇到的问题”Mappings cannot be assigned to“。

更多区块链技术与应用分类:

区块链应用    区块链开发

以太坊 | Fabric | BCOS | 密码技术 | 共识算法 | 比特币其他链

通证经济传统金融场景 | 去中心化金融 | 防伪溯源 | 数据共享 | 可信存证

出错的代码

代码

constructor() public{
  dataBases[TypeConvertUtil.stringToBytes32(TABLE_BAG_NAME)] = bagRecordOf;
  dataBases[TypeConvertUtil.stringToBytes32(TABLE_LOCATIONS_NAME)] = locationRecordOf;
  dataBases[TypeConvertUtil.stringToBytes32(TABLE_ATTENDLOCATION_NAME)] = attendLocationRecordOf;
}

这样写会出现以下报错:

browser/TableDefTools.sol:112:9: TypeError: Mappings cannot be assigned to.
dataBases[TypeConvertUtil.stringToBytes32(TABLE_BAG_NAME)] = bagRecordOf;
^----------------------------------------------------------------------^

正确的代码

定义结构:

struct RecordBean {
	// 表名称
	string tableName;
	// 主键值
	string primaryKey;
	// 内容值
	string[] values;
}
mapping(bytes32 => mapping(bytes32 => RecordBean)) dataBases;

赋值:

dataBases[TypeConvertUtil.stringToBytes32(_tableName)][TypeConvertUtil.stringToBytes32(_primaryKey)] = recordBean;

取值:

RecordBean recordBean = dataBases[TypeConvertUtil.stringToBytes32(_tableName)][TypeConvertUtil.stringToBytes32(_primaryKey)];

原文链接:solidity使用mapping+struct复杂数据结构 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值