Solidity
將新變數添加到定義的結構
是否可以為已定義的結構創建一個新的變數/鍵 - 及其相應的值?
有點像 JS 中的對象。
struct MyStruct { //defined elsewhere in SomeLib uint num; uint num2; } function setNewVar() public { MyStruct storage x = SomeLib.getX(); x.num3 = 42; //----> is something like this possible? }
是否可以為已定義的結構創建一個新的變數/鍵 - 及其相應的值?
不,結構是在編譯時定義的,之後它的定義將永遠不會改變。
不過,您也許可以使用映射來破解解決方案…
pragma solidity ^0.8.0; contract MyContract { struct MyStruct { uint256 a; mapping(string => uint256) properties; } MyStruct testStruct; function testFunction() public { testStruct.properties['b'] = 100; } }
但是不要這樣做,這意味著您定義了結構,並且以這種方式將“成員”添加到結構中只是一種非常糟糕的做法,不要這樣做。