我想制作一个简单的智能合约,它有一个列表,可以设置项目,并且可以获取列表。
坚固的代码:
events_backup
我想让getList()返回列表,但返回类型不兼容。 我怎么能这样做?
答案 0 :(得分:16)
批量访问列表/数组/等在Solidity中很痛苦。你很少在合同中看到它。在您的情况下,一种可能的解决方案是提供一个函数来使用其索引访问一个项,并让调用者从0循环到id。
答案 1 :(得分:1)
使用映射,键不会被存储,并且值不能被迭代,因此它们实际上只适用于单值查找。在您提供的示例中,使用数组可能是更好的选择。
另一方面,如果你使用一个数组并需要对它进行搜索(遍历所有项目),你需要小心,因为如果你的数组中有太多的项目,它可能最终导致成本相当数量的气体称之为功能。
答案 2 :(得分:1)
您可以更改变量列表的可见性,插入公开,然后就可以通过getList访问它。
mapping(int => string) public list;