Solidity TypeError: This type is only supported in the new experimental ABI encoder
Solidity TypeError: This type is only supported in the new experimental ABI encoder
我正在练习我的 Solidity 技能,虽然我预计会出现错误,但没想到会出现这个错误
TypeError: This type is only supported in the new experimental ABI
encoder. Use "pragma experimental ABIEncoderV2;" to enable the
feature. function getArray() public view returns (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不支持动态嵌套数组吗?
我只是想确认一下我对错误的理解。它告诉我,函数参数和 return 值中的任意嵌套数组在我当前的版本中不受支持,但在新的实验性 ABI 编码器中,这是它的意思吗?
那是因为string[]
。
是的,因为还不支持动态嵌套数组,它仍处于实验阶段。您可以通过在源代码顶部添加 pragma experimental ABIEncoderV2;
来启用该功能。
web3 包在最新的 web3 1.0.0-beta36 版本中才开始支持它。 Truffle 仍然依赖于以前的 web3 版本,所以如果你想使用 Truffle 测试你的合约,你需要等待一段时间(大约一个月)。
我正在练习我的 Solidity 技能,虽然我预计会出现错误,但没想到会出现这个错误
TypeError: This type is only supported in the new experimental ABI encoder. Use "pragma experimental ABIEncoderV2;" to enable the feature. function getArray() public view returns (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不支持动态嵌套数组吗?
我只是想确认一下我对错误的理解。它告诉我,函数参数和 return 值中的任意嵌套数组在我当前的版本中不受支持,但在新的实验性 ABI 编码器中,这是它的意思吗?
那是因为string[]
。
是的,因为还不支持动态嵌套数组,它仍处于实验阶段。您可以通过在源代码顶部添加 pragma experimental ABIEncoderV2;
来启用该功能。
web3 包在最新的 web3 1.0.0-beta36 版本中才开始支持它。 Truffle 仍然依赖于以前的 web3 版本,所以如果你想使用 Truffle 测试你的合约,你需要等待一段时间(大约一个月)。