【问题标题】:Solidity - Return Array from functionSolidity - 从函数返回数组
【发布时间】:2022-06-10 20:42:15
【问题描述】:

在我提供合同和 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);
//    }


}

【问题讨论】:

  • 你能澄清一下这个问题吗?目前还不清楚您要实现的目标。
  • 我想从一个列表中获取令牌 ID [0,1,2,3,4,5,6,7,8,9,10] 的当前所有者的所有钱包地址并且不必为此创建 10 个不同的函数

标签: solidity


【解决方案1】:

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

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 数量即可。

【讨论】:

    猜你喜欢
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2013-05-15
    • 2020-10-25
    • 2017-01-26
    • 2014-11-20
    相关资源
    最近更新 更多