首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数组作为映射变量的函数参数

数组作为映射变量的函数参数
EN

Stack Overflow用户
提问于 2018-07-24 22:13:21
回答 1查看 80关注 0票数 1

假设一个函数接受一个地址数组,如下所示:

代码语言:javascript
复制
function setVoters(address[] _inputAddresses) public ownerOnly {
    // [...]
}

使用上述函数的同一合约有一个定义为映射的变量:

代码语言:javascript
复制
mapping(address => bool) voter;

在数组上循环并将其推送到映射是否被认为是耗油/开销的最佳选择,还是如果函数接受一个地址并通过某些JavaScript功能从给定的UI进行迭代会更好?

选项a

代码语言:javascript
复制
function setVoters(address[] _inputAddresses) public ownerOnly {
    // [...]
    for (uint index = 0; index < _inputAddresses.length; index++) {
        voter[_inputAddresses[index]] = true;
    }
}

vs

选项b

代码语言:javascript
复制
function setVoter(address _inputAddress) public ownerOnly {
    // [...]
    voter[_inputAddress] = true;
}

JavaScript应该是这样的

代码语言:javascript
复制
// loop condition starts here
    await task.methods.setVoter(address[key]).send({
        from: accounts[0]
    });
// loop condition ends here
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 07:21:05

在气体效率方面最好的是选项a,调用一个函数需要相当多的气体,所以如果你在一个大的tx上做所有的事情,而不是在许多小的tx上做,你会花更少的钱。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51500880

复制
相关文章

相似问题

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