6lo*_*nde 16 ethereum solidity
我想制作一个简单的智能合约,它有一个列表,可以设置项目,并可以获取列表.
代码实力:
contract lister {
mapping(int => string) list;
int id = 0;
function getList() returns ( /*HERE*/ ) {
return list;
}
function setItemToList(string str) {
list[id] = str;
id++;
}
}
Run Code Online (Sandbox Code Playgroud)
我想让getList()返回列表,但返回类型不兼容.我怎样才能做到这一点?
bor*_*yer 17
批量访问列表/数组/等在Solidity中很痛苦.你很少在合同中看到它.在您的情况下,一种可能的解决方案是提供一个函数来使用其索引访问 一个项目,并让调用者从0循环到id.
对于映射,不会存储键,也无法迭代值,因此它们实际上只适用于单值查找。在您提供的示例中,使用数组可能是更好的选择。
另一方面,如果您使用数组并需要对其进行搜索(循环遍历所有项目),则需要小心,因为如果数组中的项目太多,最终可能会花费大量的时间调用该函数的气体。
| 归档时间: |
|
| 查看次数: |
10181 次 |
| 最近记录: |