Solidity

Solidity:將地址推入動態地址類型數組時出錯

  • January 31, 2019

我正在嘗試將地址插入地址類型動態數組。當我在函式內部進行操作時,它執行良好。沒有錯誤並且元素被正確地推入數組。

pragma solidity ^0.5.2;

contract Random {
   address[] public participants;

   function addParticipant() public {
       participants.push(0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c);
       participants.push(0x583031D1113aD414F02576BD6afaBfb302140225);
       participants.push(0xdD870fA1b7C4700F2BD7f44238821C26f7392148);
   }
}

但是,當我嘗試在沒有功能的情況下執行此操作時,它會顯示錯誤。

錯誤:預期的標識符,但得到 ‘(’

pragma solidity ^0.5.2;

contract Random {
   address[] public participants;

   // function addParticipant() public {
       participants.push(0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c);
       participants.push(0x583031D1113aD414F02576BD6afaBfb302140225);
       participants.push(0xdD870fA1b7C4700F2BD7f44238821C26f7392148);
   // }    
}

請指教。

您只能在函式之外聲明狀態變數並設置初始值。沒有處理。這是規劃儲存插槽的分配方式和可能的設置值,但僅此而已。

但是,您可以定義一個建構子以在部署合約時執行一次。這是初始化過程的適當位置。

address[] public array;

constructor() public {
 array.push( ...
}

希望能幫助到你。

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