Dat*_*yen 24
这是Solidity的限制,原因是它string基本上是一个任意长度的字节数组(即byte[]),因此string[]是一个二维字节数组(即byte[][]).根据Solidity引用,尚不支持二维数组作为参数.
合同函数可以接受二维数组吗?
外部调用和动态数组尚未实现 - 您只能使用一级动态数组.
解决这个问题的一种方法是,如果你知道所有字符串的最大长度(在大多数情况下是可能的),那么你可以这样做:
function setStrings(byte[MAX_LENGTH][] row) {...}
Yul*_*ian 15
从 Solidity 0.8.0开始,ABIEncoderV2默认使用为动态字符串数组提供本机支持。
pragma solidity ^0.8.0;
contract Test {
string[] public row;
function getRow() public view returns (string[] memory) {
return row;
}
function pushToRow(string memory newValue) public {
row.push(newValue);
}
}
Run Code Online (Sandbox Code Playgroud)