首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动动态字符串数组

启动动态字符串数组
EN

Stack Overflow用户
提问于 2020-10-30 02:45:57
回答 1查看 397关注 0票数 1

我有以下合同

代码语言:javascript
复制
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)"中相对于行的组件数不同。

代码语言:javascript
复制
uint _id = sketchs.push(_sketch)

我怎么才能避开这一切?我必须事先开始写生吗?那会是什么样子?

如能提供任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-11-02 07:59:28

作为坚实的文档成员->push(X):push(x)方法不返回任何内容

push(x):动态存储数组和字节(而不是字符串)有一个名为push(x)的成员函数,您可以使用它在数组末尾追加给定的元素。函数不返回任何

您可以更改代码并获得如下id:

代码语言:javascript
复制
sketchs.push(_sketch);
uint _id = sketchs.length - 1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64602064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档