我对以太坊和Solidity开发非常陌生。
我只想声明一个简单的数组(动态列表),一个设置函数以将字符串推入其中,而一个获得一个函数,该函数返回保存在动态数组中的所有字符串。
我搜索了很多,但是找不到这些简单的东西。
预先感谢
答案 0 :(得分:3)
这是我的解决方案,您需要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;
}
}
答案 1 :(得分:2)
最后,如果您想在应用程序中使用web3j
(对于Java)或web3js
(javascript)之类的工具与智能合约进行交互,则无法使用动态数组,因为这些库中的一些错误。
在这种情况下,您应该序列化输出数组。如果您有输入数组,则同样适用。