Solidity
如何操作儲存在數組中的值(Solidity 智能合約)?
我目前正在與一個看似非常簡單的問題作鬥爭。我只是嘗試增加儲存在 Solidity 合約中的數組中的值。
uint256[] public barLengthToBarAmtForSale;
我在建構子中初始化數組…
uint16 counter = uint16(0); while(counter <= 10) { barLengthToBarAmtForSale.push(uint256(0)); counter++; }
後來我嘗試增加這個數組中的值:
uint16 _length = 5; barLengthToBarAmtForSale[_length]++;
但是智能合約沒有編譯這一行的 bc :(
可能是什麼原因?
謝謝你。
編輯:對不起 _length 參數的誤導性名稱。這不是數組的長度。這只是一個範例值。我剛剛使用 remix 檢查了我的實現並在那裡編譯。但是,當使用 truffle migrate 時,它不起作用。
我把你的程式碼放在一起,它可以工作。
contract Mycontract { uint256[] public barLengthToBarAmtForSale; constructor() public { uint16 counter = uint16(0); while(counter <= 10) { barLengthToBarAmtForSale.push(uint256(0)); counter++; } } function test() public { uint16 _length = 5; barLengthToBarAmtForSale[_length]++; } }
請注意,此程式碼是等效的:
contract Mycontract { uint256[10] public barLengthToBarAmtForSale; function test() public { uint16 _length = 5; barLengthToBarAmtForSale[_length]++; } }