Solidity
Solidity:將地址推入動態地址類型數組時出錯
我正在嘗試將地址插入地址類型動態數組。當我在函式內部進行操作時,它執行良好。沒有錯誤並且元素被正確地推入數組。
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( ... }
希望能幫助到你。