我有一个字符串数组的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)
如果你使用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;
}
}