Ich habe eine Struktur wie folgt:
struct fooStruct {
uint foo;
uint figther;
}
Ich möchte diese Struktur initialisieren, aber sie wird nicht in einer Zuordnung, sondern in einem Array gespeichert.
Gibt es eine Möglichkeit, die Struktur wie zu initialisieren
fooStruct myStruct = fooStruct.new(par1,2,3)
Ja, einfach verwenden
fooStruct myStruct = fooStruct(1,2);
Oder
fooStruct myStruct = fooStruct({foo:1, fighter:2});
Oder
fooStruct memory myStruct; // for temporary data
myStruct.figther = 2; // will only write to memory
fooStruct storage myStruct = ...; // for persistent data, has to be initialized from a state variable. `storage` is the default and a warning will be thrown by Solidity compiler versions starting with 4.17
myStruct.fighter = 2; // will write directly to storage
Weitere Beispiele finden Sie in der Dokumentation
fooStruct myStruct = fooStruct();
myStruct.figther = 2;
?@Tjaden
, Was ist, wenn eines der Mitglieder optional ist? Wie sollte sich das Definieren der Struktur oder das Zuweisen ändern? ZB: wenn ich möchte, dass der Kämpfer einen vordefinierten Wert oder NULL
Wert hat.0
Wert für diesen Typ ( 0
für Ints, false
für Bools usw.). Wenn Sie einen "Standardwert" haben möchten, der sich vom Wert "0" unterscheidet, können Sie entweder einen Bool-Wert verwenden, der anzeigt, dass ein Wert auf "0" gesetzt wurde, anstatt standardmäßig auf 0 zu setzen. Sie können auch einen Trick verwenden wobei Sie das höchstwertige Bit jedes Werts als "gesetztes" Bit verwenden, dann verwenden Sie einfach den Rest wie für den tatsächlichen Wert.filter
/ first
-Funktion, die ein Lambda-Prädikat akzeptiert?
Paul S