Ethereum 动态立体阵列

Ethereum 动态立体阵列,ethereum,solidity,Ethereum,Solidity,我对以太坊和Solidity开发非常陌生 我只想声明一个简单数组(动态列表),一个set函数用于在其中推送字符串,另一个get函数用于返回保存在动态数组中的所有字符串 我搜索了很多,但找不到这个简单的东西 提前感谢这是我的解决方案,您需要实验性的ABIEncoderV2来返回字符串数组 pragma solidity ^0.5.2; pragma experimental ABIEncoderV2; contract Test { string[] array; funct

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

我只想声明一个简单数组(动态列表),一个set函数用于在其中推送字符串,另一个get函数用于返回保存在动态数组中的所有字符串

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


提前感谢

这是我的解决方案,您需要
实验性的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)之类的工具与智能合约进行交互,则使用动态数组将无法正常工作,因为这些库中存在一些错误。

在这种情况下,应该序列化输出数组。如果您有一个输入数组,同样适用

我可以在部署之前测试它吗?当然,在
运行
选项卡中选择环境
JavaScript虚拟机
并部署以进行测试哇,令人惊奇的解决方案已被接受。所以,当您将在Remix IDE中推送数组中的字符串时,请确保有类似
的引号“yourString”
警告:实验功能已打开。不要在实时部署上使用实验性功能。pragma实验系统2;我在编译智能合约时遇到此错误