我需要创建一个常量的查找表uint -> uint。
常量mappings
或switch-case
在坚固性中不可用。pure
函数充满了if-else
是唯一的选择吗?
有什么更好的建议吗?
理想情况下,我想要一个将气体利用率降到最低的选择。
发布于 2019-01-02 13:12:01
我看不出有什么进退两难。
您可以进行映射:
mapping(uint => uint) public myMap;
您可以在构造函数或其他地方填充某些位置:
constructor() public {
myMap[1] = 101;
myMap[2] = 201;
}
这为您提供了一个简单的view
函数(myMap(uint) public view returns(uint)
),它返回存储在索引处的数字。
如果用例是最好的方法,也可以使view
函数充满if/else
。
详细阐述这个问题,并给出一些提示,说明你想要完成什么,并可能提供更具体的指导。
希望能帮上忙。
发布于 2019-01-02 16:29:01
如果没有搜索的特殊标准,在稀疏数据情况下,否则if函数的映射效率要低得多。
相反,如果您填补了感兴趣范围内的所有漏洞,那么一个简单的数组就是最好的解决方案。
https://ethereum.stackexchange.com/questions/64925
复制相似问题