Solidity
給定函式參數初始化固定大小的儲存數組
我想在我的合約儲存中儲存一個固定大小的數組,具有使用者定義的大小,初始化為全 0。這是一個範例契約:
pragma solidity ^0.4.24; contract Test { constructor(uint size) { uint[size] storage arr; for (uint i = 0; i < size; i++) { arr[i] = 0 } } }
聲明數組時出現我的問題;remix 給出了這個錯誤:
TypeError: Invalid array length, expected integer literal or constant expression.
一種解決方法是在函式之外聲明數組,但這將要求它是一個沒有立即可訪問元素的動態數組,這是我不想要的。
是否可以在建構子中初始化這種類型的數組,如果可以,如何?
做同樣的事情的替代方法是什麼?
我想你不會喜歡這個答案,但無論如何。
不,你不能。
我意識到這是一個人為的例子,但對數組的迭代也是一種反模式。您沒有解釋您對動態數組的厭惡,並且在沒有進一步了解案例的情況下,不可能知道映射是否可能更合適,或者如何重構函式以確保在任何規模上的 O(1)。
希望能幫助到你。