我想知道是否可以简单地检查bytes32值是否存在于bytes32值数组中?
contract Test {
struct TestStruct {
string name;
bytes32 value;
}
struct ConfigStruct {
bytes32[] valuesPossible;
}
TestStruct[] public structs;
ConfigStruct[] configs;
function constructor(bytes32[] _valuesToStore) public {
configs.push(ConfigStruct(_valuesToStore));
}
function add(string _name, uint _idConfig, bytes32 _valueToStore) valueIsPossible(_idConfig, _valueToStore) public {
structs.push(TestStruct("test", _valueToStore));
}
modifier valueIsPossible(uint _idConfig, bytes32 _valueToStore) {
//require(configs[_idConfig].valuesPossible[_valueToStore]); // How to check that
_;
}
}提前致谢
编辑:对不起,我的代码不太准确,我更新了它。
发布于 2018-05-31 13:49:15
但它可能不是最便宜的解决方案,因为您必须迭代整个数组才能找到所要寻找的值。
根据您想要做的事情,您可以使用mapping,并在O(1)中查找它是否“存在”。
一个例子是:
mapping (bytes32 => bool) public ValueExists;现在,如果确实需要数组,则可以将映射解决方案和数组组合在一起。
https://ethereum.stackexchange.com/questions/50094
复制相似问题