Ich möchte eine verknüpfte Liste im Vertragsspeicher implementieren
Irgendwas verlinke das:
contract A {
struct LinkedList {
uint value;
LinkedList storage next; // What goes here? Can I reference the storage of the next struct in solidity?
}
}
Innerhalb Ihrer Struktur sollten Sie das nächste Element in der Liste verfolgen
struct LinkedList {
bytes32 next;
uint value;
}
Behalten Sie dann die Länge + Kopf der Liste im Auge und speichern Sie die Strukturen in einem Mapping mit ihren IDs
uint public length;
bytes32 public head;
mapping (bytes32 => LinkedList) public listObjects;
Sie können Einträge wie folgt hinzufügen:
function addEntry(uint _number) public returns (bool) {
LinkedList memory object = LinkedList(head,_number);
bytes32 id = sha3(_number, length, block.timestamp);
listObjects[id] = object;
head = id;
length++;
}
Sie benötigen keine verknüpfte Liste, da Arrays in Solidity automatisch erweitert werden und dies nur den Aufwand für die Gasausführung erhöhen würde.