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

标签 blockchain ethereum solidity smartcontracts

我想做一个简单的智能合约,它有一个列表,可以设置项目,并且可以获取列表。
坚固的代码:

contract lister {
    mapping(int => string) list;
    int id = 0;
    
    function getList() returns ( /*HERE*/ ) {
        return list;
    }

    function setItemToList(string str) {
        list[id] = str;
        id++;
    }
}
我想让 getList() 返回列表,但返回类型不兼容。
我怎样才能做到这一点?

最佳答案

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

另一方面,如果您使用数组并需要对其进行搜索(遍历所有项目),则需要小心,因为如果数组中的项目太多,最终可能会花费大量气体来调用函数。

关于blockchain - 如何在 Solidity 中返回映射列表? (以太坊合约),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37606839/

相关文章:

database - 为服务的最终用户提供伪造数据保护——工具?

blockchain - 如何解决此错误 (t : Identifier cannot extend from super type) on Hyperledger Composer playground?

node.js - Uncaught Error :u处的地址无效(web3.min.js:1)

javascript - 如何在 web3.js 中设置回调?

blockchain - 从外部合约调用时,solidity 合约状态变量值显示奇怪

blockchain - 如何使用特定私钥创建帐户?

reactjs - 在区 block 链上存储哈希(存储在 ipfs 上的图像哈希)

azure - 将 Metamask 连接到 Azure 中的私有(private)区 block 链

javascript - 等待内部的等待不会给出正确的输出

node.js - 如何使用web3将以太坊从一个钱包转移到另一个钱包?