Solidity 中的动态数组
Dynamic array in Solidity
我想声明一个简单的数组(动态列表),一个 set
函数来压入一个字符串和一个 get
函数,其中 returns 所有字符串都保存在动态列表中数组。
我搜索了很多但找不到这个简单的东西。
这是我的解决方案,您需要 experimental ABIEncoderV2
到 return 个字符串数组。
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)等工具与您的智能合约进行交互,由于这些库中存在一些错误,因此无法使用动态数组。
在这种情况下,您应该序列化您的输出数组。如果您有输入数组,同样适用。
我想声明一个简单的数组(动态列表),一个 set
函数来压入一个字符串和一个 get
函数,其中 returns 所有字符串都保存在动态列表中数组。
我搜索了很多但找不到这个简单的东西。
这是我的解决方案,您需要 experimental ABIEncoderV2
到 return 个字符串数组。
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)等工具与您的智能合约进行交互,由于这些库中存在一些错误,因此无法使用动态数组。
在这种情况下,您应该序列化您的输出数组。如果您有输入数组,同样适用。