Solidityはmapping + structの複雑なデータ構造を使用します

堅牢にmapping + structの複雑なデータ構造を使用する場合、発生する問題は「マッピングを割り当てることができない」です。

より多くのブロックチェーンテクノロジーとアプリケーション分類:

ブロックチェーンアプリケーションブロックチェーン    開発

イーサネットスクエア|ファブリック| 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の複雑なデータ構造を使用します 

おすすめ

転載: blog.csdn.net/JonasErosonAtsea/article/details/109236550