我有一个函数从这个映射返回一个uint256[]:mapping(address => uint256[]) ownerToIds
但问题是,当我试图返回数组元素时,它什么也不做。
我已经尝试过添加public和view来运行,但是它并没有改变任何事情。
代码:(在二进制测试网中使用混合)
mapping(address => uint256[]) ownerToIds;
function getOwnersOwnedTokenIds(address owner) public returns(uint256[] memory){
return ownerToIds[owner];
}发布于 2022-08-09 15:33:16
当您希望返回特定数据以处理它时,必须使用视图访问修饰符。它允许您从智能契约中推断数据。
在这种情况下,您可以尝试以这种方式修改getOwnersOwnedTokenIds()函数:
function getOwnersOwnedTokenIds(address owner) public view returns(uint256[] memory){
return ownerToIds[owner];
}工作智能合同的示例:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Test {
mapping(address => uint256[]) ownerToIds;
constructor() {
ownerToIds[msg.sender].push(1);
ownerToIds[msg.sender].push(2);
ownerToIds[msg.sender].push(3);
ownerToIds[msg.sender].push(4);
}
function getOwnersOwnedTokenIds(address owner) public view returns(uint256[] memory){
return ownerToIds[owner];
}
}https://stackoverflow.com/questions/73290823
复制相似问题