gpt4 book ai didi

Solidity:在公共(public)方法中返回数组

转载 作者:行者123 更新时间:2023-12-05 05:10:35 24 4
gpt4 key购买 nike

我正在尝试创建一个返回数组的公共(public)函数,这是错误

Return argument type mapping(uint256 => struct ItemList.Item storage ref) is not implicitly convertible to expected type (type of first return variable) uint256[] memory.

pragma solidity ^0.5.0;
contract ItemList {
uint public itemCount = 0;
mapping(uint256 => Item) public items;

event ItemCreated (
uint id,
string proofdocument
);

struct Item {
uint id;
string proofdocument;
}

constructor() public {
}

function createItem(string memory _proofdocument) public {
itemCount++;
items[itemCount] = Item(itemCount, _proofdocument);
emit ItemCreated(itemCount, _proofdocument);
}

function getItems() public pure returns(uint256[] memory ) {
return items; <----------ERROR
}
}

谢谢安德里亚

最佳答案

你可以通过web3.js库获取循环中的每一项

const array = []
for (let i = 0; i < itemCount; itemCount += 1) {
array.push(contract.getItem(i)) // where getItem do items[I] in solidity
}

或者你可以使用pragma experimental版本:

pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;

contract ItemList {
uint public itemCount = 0;

struct Item {
uint id;
string proofdocument;
}
Item[] items;

constructor() public {}

function createItem(string memory _proofdocument) public {
itemCount++;
items.push(Item(itemCount, _proofdocument));
}

function getItems() external view returns(Item[] memory) {
return items;
}
}

关于Solidity:在公共(public)方法中返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56469332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com