Scheint, als gäbe es viele verwandte Fragen, z. B. hier , aber ich kann immer noch nicht glauben, dass es im Remix nicht unterstützt wird, oder verstehe ich es falsch? scheint, wie es in der Produktion unterstützt wird.
struct Test {
address receiver;
string date;
}
mapping(address => Test[]) public testInfo;
function getTestInfo(address _account) public constant returns (Test[]) {
return testInfo[_account];
}
Gibt es trotzdem diesen Code auszuführen und ein Array von zurückzugeben Test
?
Es wird ausgeführt, aber die Ausgabe wird nicht dekodiert. Sie sehen diese Meldung in der Konsole:
failed to decode output: Error: Unsupported or invalid type: tuple
Ich wollte vorschlagen, zwei Arrays zu destrukturieren und zurückzugeben, aber es gibt eine Zeichenfolge in der Struktur, die ebenfalls nicht zurückgegeben werden kann, da die Zeichenfolge selbst ein Array ist. Sie haben es so benannt, dass es vielleicht auf einem Feld oder vielleicht auf einem Feld date
gehalten werden kann ? Wenn dies der Fall ist, können Sie Folgendes tun:uint
bytes32
function getTestInfo(address _account) public constant returns (address[], bytes32[]) {
Das heißt, geben Sie Struct-Felder in separaten Arrays zurück und strukturieren Sie sie in Ihrem Frontend um.
Busfahrer
lunr
address
es und 10bytes32
s zurück, nennen wir siereceivers
unddates
. Jedes Element in diesen Arrays wird auf die entsprechenden Felder desTest
ursprünglichen Arrays gesetzt, z. B.receivers[0] == Tests[0].receiver
unddates[0] == Tests[0].date
. Aus dieser Struktur können SieTests
im Frontend ein Array aufbauen.Busfahrer
2018-01-31
und was zurückgegeben wird, ist die Adresse.0x323031382d30312d323800000000000000000000000000000000000000000000
Was kann behoben werden?lunr
uint
s für Datumsangaben verwenden.Busfahrer