Solidity

將新變數添加到定義的結構

  • October 30, 2021

是否可以為已定義的結構創建一個新的變數/鍵 - 及其相應的值?

有點像 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;
   }

}

但是不要這樣做,這意味著您定義了結構,並且以這種方式將“成員”添加到結構中只是一種非常糟糕的做法,不要這樣做。

引用自:https://ethereum.stackexchange.com/questions/112559