Solidity -从函数返回数组



这段代码将在我提供合同和ID后成功找到任何合同的所有者。我如何让它成为一个搜索函数找到10或100个不同的id ?

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface INft {
function ownerOf(uint256 tokenId) external view returns (address); //works
}
contract Test {
function getNftTokenOwner(address _nft) external view returns (address){
//        return INft(_nft).ownerOf(_tokenId);
return INft(_nft).ownerOf(0);
}


//    function getNftTokenOwner(address _nft, uint256 _tokenId) external view returns (address){
//        return INft(_nft).ownerOf(_tokenId);
//    return INft(_nft).ownerOf(0);
//    }

}

只需循环遍历它并将地址保存到像这样的数组中。

function getNftTokenHolder(address _nft, unit _tokenIds) public returns (address[]) {
address[] memory addr = new address[](_tokenIds);
for (uint i; i < _tokenIds; i++) {
addr[i] = INft(_nft).ownerOf(i);
}
}

这应该可以工作。它将返回一个包含所有地址的数组。只需插入你想要循环的tokenid个数。

最新更新