Solidity
無法將變數 i 用於 for 循環內的任何操作
我是新手,遇到了一個非常奇怪的問題。我無法將變數 i 用於 for 循環內的任何類型的操作。
for (uint256 i; i < data.numPoints; i++) { //uint256 xx = data.x; //Working //uint256 yy = data.y; //Working //uint256 xx = data.x * i; //Not working //uint256 yy = data.y * i; //Not working uint256 xx = i; //Not working uint256 yy = i; //Not working points[i] = xx; }
契約編譯成功,但在呼叫時拋出執行時異常。我錯過了什麼嗎?
您沒有提供足夠的資訊來複製您的問題或評論您的故障排除過程。
目前尚不清楚您是如何得出結論的。
最可疑的行是根本沒有註釋的行。
points[i] = xx;
如果
i
>=points.length
則此行將恢復,因為您無法寫入不存在的數組成員。您不能以這種方式附加到數組。此外,在此行恢復的情況下,所有先前的行也將恢復,因為事務執行是原子的。使用正常的故障排除思維可能會導致令人困惑的結果。
無論如何,不可能說這是否是問題,但這是一個常見問題,其他問題似乎是低風險的。
希望能幫助到你。