Solidity
無法將值分配給函式內數組的 0 索引
所以,我在數組上嘗試了 3 個簡單的程式碼
// SPDX-License-Identifier: MIT pragma solidity 0.8.7; contract test{ uint[] public x; function testing() public { x[0] = 20; } }
這會引發錯誤,但如果我使用 x.push(20) 而不是 x
$$ 0 $$= 20 然後它工作或….. 如果我將數組聲明為
uint[3] public x;
然後使用 x
$$ 0 $$= 20 函式內部 那麼它的工作原理……或者……如果我把它寫成:
uint[] public x = [1,2,3];
並使用 x
$$ 0 $$= 20 函式內部 然後它也可以工作……我不明白它背後的機制
那是因為當你聲明它時你的數組的大小為零
uint[] public x;
所以第零個索引不存在,它會引發錯誤。當您使用顯式長度定義數組時,它不會給出任何錯誤,因為確實存在第零個索引。如果要使用動態數組,請嘗試使用:
x.push()