Solidity

Solidity 中的基本 For 循環失敗

  • July 27, 2022

我創建了一個簡單的 For 循環,它應該返回一個數字數組。但它失敗了errored: VM error: revert

我想我在這裡缺少一些基本的東西,所以我希望你們能在這裡提供幫助。

   // SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract ForLoop {


    function getOwnedTokens() public pure returns (uint[] memory) {

       uint[] memory listOfOwnedTokens;

       uint numberOfOwnedTokens = 4;

       for(uint tokenIndex = 0; tokenIndex < numberOfOwnedTokens; tokenIndex++)  {
           listOfOwnedTokens[tokenIndex] = tokenIndex;
        }

       return listOfOwnedTokens;
   }

}
   // SPDX-License-Identifier: GPL-3.0

   pragma solidity >=0.7.0 <0.9.0;

   contract ForLoop {


function getOwnedTokens() public pure returns (uint[] memory) {
   uint numberOfOwnedTokens = 4;
   uint[] memory listOfOwnedTokens = new uint[](numberOfOwnedTokens);



   for(uint tokenIndex = 0; tokenIndex < numberOfOwnedTokens; tokenIndex++)  {
       listOfOwnedTokens[tokenIndex] = tokenIndex;
    }

   return listOfOwnedTokens;
}

}

在這裡,我為你修好了。有點難以解釋答案。但是“不允許”索引作為記憶體的不固定大小的數組。

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