Wenn ich die Werte eines Arrays wie folgt setze, liege ich falsch?
uint256 n = 0;
bytes32[n] example;
function getArraySize(uint256 arraySize) public returns(uint256 size) {
size = arraySize;
return size;
}
n = getArraySize(3);
example[n] = [bytes32("value_1"),bytes32("value_2"),bytes32("value_3")];
Ich bekomme " parser error: expected identifier
" für, n = getArraySize(3);
aber ich weiß nicht, was falsch ist?
Hinweis : Diese Frage bezieht sich auf eine andere Frage (den Link unten), in deren Antwort in Hinweis Nummer 2 erwähnt wird, dass es im Falle der Definition eines Arrays mit dynamischer Größe nicht möglich ist, Werte dieses Arrays wie folgt festzulegen:
newObject(100, 3, [bytes32("location"),bytes32("price"),bytes32("sold")], [bytes32("Paris"),bytes32("50"),bytes32("yes")], address(0xE07b6e5a2026CC916A4E2Beb03767ae0ED6af773);
Link zu verwandter Frage: Fehlercodierungsargument (Remix)
Ihr Code hat viele Probleme. Zunächst einmal würde die Art und Weise, wie Sie die Größe des Arrays zuweisen, zu 0 führen, da n
die Arraygröße bei Beginn mit 0 0 wäre. Stattdessen bytes32[] example;
würde es ausreichen, ein dynamisches Array zu erstellen. Das nächste Problem ist, dass Sie versuchen, n = getArraySize(3); example[n] = [bytes32("value_1"),bytes32("value_2"),bytes32("value_3")];
außerhalb einer Funktion zu verwenden, was mit solidity nicht möglich ist. Um dies zu beheben, müssen Sie den Code mit einer Funktion umschließen. Anschließend können Sie mit example.push("value_1");
ect in das Array einfügen. was die Verwendung von getArraySize und n irrelevant macht.
example.push("value_1"); example.push("value_2"); example.push("value_3");
gute Stimmung
Fragesteller