如何解决Solidity存储和计数次数颜色被投票支持
所以我只是在学习坚固性,我想计算选择一种颜色的次数。现在我知道我可以做到:
uint public red = 0;
function voteRed() public
{
red++;
}
但是我必须事先用每种颜色编码。
我要做的是让用户使用字符串为颜色“投票”。
如果选择了颜色,则只需在颜色上加上+1。
如果尚未选择颜色,则其会添加颜色名称,然后添加+1。
所以可以说我想投票“黄色”。我将字符串“ Yellow”发送到合同,它存储数据“ Yellow”以及为其投票的次数(1)。
如果其他人对“黄色”投了票,它只会在“黄色”数据中添加+1(2)
依此类推...
所以我想可能是这样的:
function voteColor(string memory color) public
{
// how to store the data and count
}
但是我不确定如何存储颜色以及该颜色的计数器。
解决方法
考虑使用简单的映射:mapping(string => uint256)
。
请记住,任何String都是使用0
初始化的。
这是一个简化的示例:
pragma solidity >=0.4.22 <0.7.0;
contract Bla {
mapping(string => uint256) colors;
function voteColor(string memory color) public {
colors[color]++;
}
function getColorCount(string memory color) public view returns (uint256) {
return colors[color];
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。