【问题标题】:How to return an Array in an struct?如何在结构中返回数组?
【发布时间】:2022-10-20 23:23:31
【问题描述】:

我写了一个合约,其中包含一个“wRequest”数组,这是我写的构造函数的类型。但是当我在列表中添加一些东西并尝试返回它时,我只能得到不是数组的参数。 似乎有什么问题?

合同 :


pragma solidity ^0.8.0;


contract s {

    WRequest[] public WRequestList;

    struct WRequest {
        address receiver;
        address[] tokenAddresss;
        uint256[] amounts;
        uint approved;
        
    }

    function submitWithdrawRequest(address receiver, address[] memory tokenAddresss, uint256[] memory amounts) public {
        WRequest memory request = WRequest(receiver, tokenAddresss, amounts, 0);
        WRequestList.push(request);

    }

}

部署.js


const hre = require("hardhat");

async function main() {

  const Lock = await hre.ethers.getContractFactory("s");
  const lock = await Lock.deploy();
  const [owner, account1 ,account2] = await ethers.getSigners();

  await lock.deployed();
  console.log("deployed")
  await lock.submitWithdrawRequest(owner.address, [account1.address], [7])
  const list = await lock.WRequestList(0);
  console.log(list);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

结果

[
  '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
  BigNumber { value: "0" },
  receiver: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
  approved: BigNumber { value: "0" }
]

它只包括接收者地址和批准,而不包括 tokenAddresss 和数量的数组。

【问题讨论】:

    标签: struct solidity smartcontracts hardhat


    【解决方案1】:

    您可以为此编写一个函数

    function getWRequest(uint _index) public view returns(WRequest memory) {
       return WRequestList[_index];
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 2014-06-02
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多