我想声明一个简单的数组(动态列表),一个set
函数来推送字符串,一个get
函数返回保存在动态数组中的所有字符串。
我搜索了很多,但找不到这个简单的东西。
这是我
的解决方案,您需要experimental ABIEncoderV2
返回字符串数组。
pragma solidity ^0.5.2;
pragma experimental ABIEncoderV2;
contract Test {
string[] array;
function push(string calldata _text) external {
array.push(_text);
}
function get() external view returns(string[] memory) {
return array;
}
}
最后,如果你想在应用程序中使用web3j
(用于java)或web3js
(javascript)等工具与智能合约进行交互,那么由于这些库中的一些错误,使用动态数组是行不通的。
在这种情况下,您应该序列化输出数组。如果您有输入数组,则同样适用。