Ethereum 如何返回循环和数组元素“数据位置必须为”;“记忆”;对于函数|动态数组中的返回参数

Ethereum 如何返回循环和数组元素“数据位置必须为”;“记忆”;对于函数|动态数组中的返回参数,ethereum,solidity,Ethereum,Solidity,我使用以下代码返回数组 function getActiveDepositIndexes() public view returns (uint256 [] storage) { User storage user = users[msg.sender]; Deposit[] storage deposits = user.deposits; uint[] memory indices = new uint[](deposits.length); for(uin

我使用以下代码返回数组

 function getActiveDepositIndexes() public view returns (uint256 [] storage) {
    User storage user = users[msg.sender];
    Deposit[] storage deposits = user.deposits;
    uint[] memory indices = new uint[](deposits.length);
    for(uint i = 0; i < deposits.length; i++) {
        if(deposits[i].active && !deposits[i].closed){
            indices.push(i);
        }
    }
    return indices;
 }
环境:

Truffle v5.1.20 (core: 5.1.20)
Solidity - 0.6.0 (solc-js)
Node v8.16.2
Web3.js v1.2.1

似乎您明确指定了函数返回值的
存储
。尝试将函数签名替换为以下内容:

function getActiveDepositIndexes() public view returns (uint[]) {...}

内存
默认用于返回值

为什么在返回中使用“存储”,而不是“内存”?
function getActiveDepositIndexes() public view returns (uint[]) {...}