Ist es möglich, Strukturen zu erstellen und eine Variable zu deklarieren?

Nehmen wir an, ich habe eine Basisstruktur, Base. Ich kann es so einrichten;

struct Base{Struct2 data}

Hier Struct2ist eine andere Struktur. Aber was ist, wenn ich eine Struktur erstellen möchte, Basebei der der Datentypwert eine andere Typstruktur ist, sagen wir Struct1?

Ich weiß, dass ich es schaffen kann;

struct Base1{Struct1 data}

Aber das ist nicht, was ich will. Ich möchte eine Basisstruktur mit Struct1as-Daten erstellen. Ist das möglich? Ich denke nicht.

Antworten (1)

Ich bin mir wirklich nicht 100% sicher, ob ich die Frage verstehe, aber ich fange an zu glauben, dass die "Wert" -Seite der Dinge eine willkürliche Struktur sein soll und das genaue Layout dieses Mitglieds nicht im Voraus bekannt ist?

Kurze Antwort: Nein. Sie definieren neue Typen aus bekannten Typen und das Layout muss eindeutig sein.

Ich kann mir eine Reihe von Möglichkeiten vorstellen, um diesen Effekt innerhalb der Grenzen von Solidity zum Laufen zu bringen. Sie müssen es normalisieren, indem Sie entweder eine endliche Menge gültiger Strukturen definieren, beliebig komplexe (aber normalisierte) Sätze von Schlüssel/Wert-Paaren einrichten oder etwas anderes.

Ich hoffe es hilft.

Ja, das ist im Grunde meine Frage. Ich denke, eine ähnliche Frage ist, ob Strukturen Konstanten sind oder nicht (in Bezug auf die Größe), genauso wie Sie dynamische Arrays erstellen dürfen, aber auch Arrays mit einer festen Seite. In diesem Beispiel wäre eine dynamische Struktur eine Struktur, mit der Sie verschiedene Arten von Strukturen an Variablen übergeben können, und feste Strukturen könnten keinen Variablentyp ändern. Ich denke, es ist letzteres. Danke!
Sie sind statisch in dem Sinne, dass sie Typen und eindeutig angeordnet sind, aber sie können dynamische Mitglieder enthalten, z. B. , uint[] myUints, myOtherStruct[] myOtherStructsoder sogar mapping(keyType=>valType) mapName;Speicher-Fußabdrücke sind insofern etwas seltsam, als die Blockchain normalerweise nicht wirklich wächst, bis ein Slot explizit beschrieben wird . Mappings zum Beispiel sind (per Definition) riesige Namensräume, aber sie kosten erst, wenn ein Wert an einen Ort geschrieben wird.