Solidity

在 Solidity 的 int 數組中聲明一個字元串數組

  • January 4, 2021

我正在使用松露,我試圖在部署執行腳本期間在我的契約的建構子中傳遞一個雙倍價格數組。IE

在遷移文件中,我有一個二維數組。它的嵌套數組包含一對價格。

var prices = [
 ['1223.456', '1223.456'],
 ['123.46', '12.1']
];
contract A {

  struct Price {
       string Price0;
       string Price1;
   }

   mapping (uint => Price) prices;

   constructor (int[][] memory _prices) public
   {

       for(uint i=0; i< _prices.length; i++) 
       {

         prices[i] = Price(
             _prices[i][0],
             _prices[i][1]
         );

       }
   }
}

如何在契約的建構子中聲明它,以便我可以立即解析它?到目前為止我看到的是我可以聲明一個具有相同類型的二維數組,即

uint[][] prices;
// or
string[][] prices;

但這些不起作用,因為在我的雙數組中,1 級鍵的類型是整數,而 2 級的值是字元串類型。

試試這個:

constructor(string[] memory _prices0, string[] memory _prices1) public {
   uint256 length = _prices0.length;
   require(length == _prices1.length, "invalid input length");
   for (uint256 i = 0; i < length; i++) {
       prices[i] = Price({
           Price0: _prices0[i],
           Price1: _prices1[i]
       });
   }
}

然後,從 JS 中,您可以使用以下命令呼叫它:

var prices0 = ['1223.456', '123.46'];
var prices1 = ['1223.456', '12.1'];

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