Solidity

如何在 Solidity 中返回動態字元串數組?

  • March 9, 2021

如何返回動態字元串數組?我遇到了序列化和反序列化。如何序列化和反序列化動態字元串數組?

pragma solidity ^0.5.0;

contract Abc{
   string[] st;

   function add(string memory newValue) public {
       st.push(newValue);
   }

   // return st

從 Solidity 開始0.7.5ABIEncoderV2不再是實驗性的,可以使用 pragma 指令進行選擇。

這為從函式返回動態字元串數組提供了本機支持。

pragma solidity ^0.8.2;
pragma abicoder v2;

contract Abc {
   string[] st;

   function add(string memory newValue) public {
       st.push(newValue);
   }

   function getSt() public view returns (string[] memory) {
       return st;
   }
}

附帶說明一下,從 Solidity 開始0.8.0 abicoder v2預設啟用,因此可以省略 pragma 指令。

實際上,solidity 不支持返回此處描述的字元串數組:

返回字元串的動態數組

您可以採用此處描述的解決方法來修復它:

反序列化一個字元串

引用自:https://ethereum.stackexchange.com/questions/69077