jua*_*nez 4 mapping struct solidity smartcontracts remix
这是我的代码,我试图创建一个包含两个映射的结构并将结构插入到映射中:
pragma solidity ^0.7.2;
contract Campaign {
struct Usuario {
string id;
mapping(string => uint) debe;
mapping(string => uint) leDebe;
}
Usuario[] public usuarios;
uint numUsuarios;
mapping(string => Usuario) public circulo;
constructor () {
}
function usuarioPrueba(string memory id, string memory idDebe, uint valDebe, string memory idLeDebe, uint valLedebe) public {
usuarios.push();
Usuario storage newUsuario = usuarios[numUsuarios];
numUsuarios++;
newUsuario.id = id;
newUsuario.debe[idDebe] = valDebe;
newUsuario.leDebe[idLeDebe] = valLedebe;
circulo[id] = newUsuario;
}
}
Run Code Online (Sandbox Code Playgroud)
但我在 Remix 上的第 28 行 (circulo[id] = newUsuario;) 收到以下错误:
类型错误:无法分配包含(嵌套)映射的存储中的类型。circulo[id] = newUsuario;
非常感谢您事先的帮助,我对我的英语感到抱歉,我来自西班牙,如果解决方案很明显,那么我对 Solidity 和智能合约有点陌生。
小智 10
从 v 0.7.0 开始,您无法分配包含嵌套映射的结构。相反,您可以做的是创建像这样的新实例,然后将值分配给结构的属性!
Usuario storage newUsuario = circulo[id];
numUsuarios++;
newUsuario.id = id;
newUsuario.debe[idDebe] = valDebe;
newUsuario.leDebe[idLeDebe] = valLedebe;
Run Code Online (Sandbox Code Playgroud)