Solidity中的动态数组

时间:2018-12-31 09:42:49

标签: ethereum solidity

我对以太坊和Solidity开发非常陌生。

我只想声明一个简单的数组(动态列表),一个设置函数以将字符串推入其中,而一个获得一个函数,该函数返回保存在动态数组中的所有字符串。

我搜索了很多,但是找不到这些简单的东西。

预先感谢

2 个答案:

答案 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)之类的工具与智能合约进行交互,则无法使用动态数组,因为这些库中的一些错误。
在这种情况下,您应该序列化输出数组。如果您有输入数组,则同样适用。