固体中的动态数组



我想声明一个简单的数组(动态列表),一个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)等工具与智能合约进行交互,那么由于这些库中的一些错误,使用动态数组是行不通的。
在这种情况下,您应该序列化输出数组。如果您有输入数组,则同样适用。

最新更新