我有以下合同
pragma solidity >=0.4.21 <0.7.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract Sketch is ERC721 {
string[] public sketchs;
mapping(string => bool) _sketchExists;
constructor() ERC721("Sketch", "SKETCH") public {
}
function mint(string memory _sketch) public {
uint _id = sketchs.push(_sketch);
_mint(msg.sender, _id);
_sketchExists[_sketch] = true;
}
}但是,当我运行松露测试时,我得到了错误消息TypeError:左侧(1)的组件数与右侧(0)"中相对于行的组件数不同。
uint _id = sketchs.push(_sketch)我怎么才能避开这一切?我必须事先开始写生吗?那会是什么样子?
如能提供任何帮助,将不胜感激。
发布于 2020-11-02 07:59:28
作为坚实的文档成员->push(X):push(x)方法不返回任何内容
push(x):动态存储数组和字节(而不是字符串)有一个名为push(x)的成员函数,您可以使用它在数组末尾追加给定的元素。函数不返回任何。
您可以更改代码并获得如下id:
sketchs.push(_sketch);
uint _id = sketchs.length - 1;https://stackoverflow.com/questions/64602064
复制相似问题