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