【发布时间】: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