Ich definiere eine Waage wie folgt:
mapping (address => uint[]) Energy_Balance
um den Verlauf jeder Transaktion aufzubewahren. Ich setze seinen neuen Wert wie folgt:
First Transaction: balances[owner][0] = balances[owner][0] + value;
Second Transaction: balances[owner][1] = balances[owner][1] + value;
Jetzt möchte ich a so definieren , dass es seinen letzten Wert jedes Maluint
counter
behalten kann, wenn es um eine Einheit erhöht wird , wie folgt:
balances[owner][counter] = balances[owner][counter] + value
Wenn ich Zähler wie folgt definiere, ist er in der Solidität korrekt und kann seinen letzten Wert behalten ?
static uint counter = 0;
function myFunction(uint value) {
balances[owner][counter] = balances[owner][counter] + value;
counter = counter +1;
}
Sie können vereinfachen.
function myFunction(uint value) {
balances[owner].push(value);
}
Außerdem einige nützliche Getter:
function getOwnerValueCount(address owner) returns(uint count) {
return balances[owner].length;
}
Fügen Sie public
Ihrem Mapping hinzu Energy_Balances
und Sie erhalten ungefähr einen "kostenlosen" Getter:
function Energy_Balances(address owner, uint row) public view returns(uint) {
return Energy_Balances[owner][row];
}
Nebenbei: Konventioneller wäre es zu camelCase energyBalances
.
Ich hoffe es hilft.
Fragesteller
Rob Hitchens
mapping (address=>uint [])
bedeutet, dass es für jede Adresse ein Array gibt.push
fügt eine weitere Zeile hinzu, sodass Sie den Zähler nicht selbst verwalten müssen.