无法从getter返回字符串数组

问题描述 投票:1回答:1

我有一个字符串数组的solidity contract getter函数:

string[] public flightsRegistered;

function getFlightsRegistered
                          (
                          )
                          public
                          view
                          returns(string[])

{
  return flightsRegistered;
}

在用松露编译时,这就是我得到的

松露编译错误

TypeError:仅在新的实验性ABI编码器中支持此类型。使用“pragma experimental ABIEncoderV2;”启用该功能。返回(串[])

还有其他工作吗?

Web3 v1.0.0-beta.37

松露v5.0.9

Solidity v0.4.24(solc-js)

ethereum solidity smartcontracts web3 truffle
1个回答
1
投票

如果你使用pragma实验ABIEncoderV2,目前solidity只支持数组的返回。如果你不想使用它,你必须再创建一个函数来返回数组的长度,并在Dapp中创建一个for循环并通过索引访问数组元素。下面是示例代码

pragma solidity >=0.4.22 <0.6.0;
contract Array {

string[] public flightsRegistered;


function getFlightsRegistered(uint _index) public view returns(string memory){
  return flightsRegistered[_index];
}

function totalFlightsRegistered() public view returns (uint ){
    return flightsRegistered.length;
}
}
© www.soinside.com 2019 - 2024. All rights reserved.