Solidity

Solidity:替代返回(字元串)

  • June 20, 2018

我有一個映射

mapping (address => string[]) myMap;

如何返回與給定地址關聯的所有字元串的列表?

我知道在 Solidity 中不能返回字元串數組,但我需要做的是

function get(address _addr) public returns (string[]){
      return myMap[_addr];
}

如果您更改 bytes32 的字元串並使數組的長度固定,您將能夠做到這一點。例如,對於 10 個元素的數組。

mapping (address => bytes32[10]) myMap;
function get(address _addr) public returns (bytes32[10]){
  return myMap[_addr];
}

問題是您需要將字元串編碼為 bytes32。

另一種選擇是使用以下方法啟動實驗性 ABI 編碼器:

pragma experimental ABIEncoderV2;
pragma solidity 0.4.24;

   contract mycontract{

       mapping (address => string[]) myMap;

       function get(address _addr) public returns (string[]){
          return myMap[_addr];
       }

   }

這是實驗性的,不建議用於生產。

希望這可以幫助

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