Solidity

無法將變數 i 用於 for 循環內的任何操作

  • August 22, 2021

我是新手,遇到了一個非常奇怪的問題。我無法將變數 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則此行將恢復,因為您無法寫入不存在的數組成員。您不能以這種方式附加到數組。

此外,在此行恢復的情況下,所有先前的行也將恢復,因為事務執行是原子的。使用正常的故障排除思維可能會導致令人困惑的結果。

無論如何,不可能說這是否是問題,但這是一個常見問題,其他問題似乎是低風險的。

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/107557