我正在练习我的 Solidity 技能,虽然我确实预料到会出现错误,但我没想到会出现此错误
类型错误:此类型仅在新的实验性 ABI 中受支持 编码器。使用"杂注实验 ABIEncoderV2;"启用 特征。函数 getArray(( public view 返回 (string[]( {
这是我在 Remix 中的代码:
pragma solidity ^0.4.17;
contract Test {
string[] public myArray;
function Test() public {
myArray.push("hola");
}
function getArray() public view returns (string[]) {
return myArray;
}
}
这里给了什么?
这是因为标准 ABI 不支持动态嵌套数组吗?
我只是想确认我对错误的理解。它告诉我,函数参数和返回值中的任意嵌套数组在我的当前版本中不受支持,但在新的实验性 ABI 编码器中,这是它所说的吗?
那是因为string[]
。
是的,这是因为尚不支持动态嵌套数组,它仍处于实验阶段。您可以通过在源代码顶部添加pragma experimental ABIEncoderV2;
来启用该功能。
Web3软件包刚刚在最新的Web3 1.0.0-beta36版本中开始支持它。松露仍然依赖于以前的 web3 版本,因此如果您想使用 Truffle 测试您的合同,您需要等待一段时间(大约一个月(。