如何解决启动动态字符串数组
我有以下合同
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)
我该如何解决?我必须提前启动草图吗?那会是什么样?
任何帮助将不胜感激
解决方法
作为solidity docs成员-> push(x):push(x)
方法什么也不返回
推(x): 动态存储数组和字节(不是字符串)具有一个称为push(x)的成员函数,可用于在数组末尾附加给定元素。函数不返回任何内容。
您可以更改代码并获取ID,如下所示:
sketchs.push(_sketch);
uint _id = sketchs.length - 1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。