如何在Solidity中返回映射列表? (以太坊合约)

时间:2016-06-03 05:52:07

标签: ethereum solidity

我想制作一个简单的智能合约,它有一个列表,可以设置项目,并且可以获取列表。

坚固的代码:

events_backup

我想让getList()返回列表,但返回类型不兼容。 我怎么能这样做?

3 个答案:

答案 0 :(得分:16)

批量访问列表/数组/等在Solidity中很痛苦。你很少在合同中看到它。在您的情况下,一种可能的解决方案是提供一个函数来使用其索引访问一个项,并让调用者从0循环到id。

答案 1 :(得分:1)

使用映射,键不会被存储,并且值不能被迭代,因此它们实际上只适用于单值查找。在您提供的示例中,使用数组可能是更好的选择。

另一方面,如果你使用一个数组并需要对它进行搜索(遍历所有项目),你需要小心,因为如果你的数组中有太多的项目,它可能最终导致成本相当数量的气体称之为功能。

答案 2 :(得分:1)

您可以更改变量列表的可见性,插入公开,然后就可以通过getList访问它。

mapping(int => string) public list;