#solidity
Вопрос:
Я пытаюсь определить отображение для использования внутри функции в качестве средства быстрого определения того, существует ли ключ. Я понимаю, что мог бы также использовать массив и выполнить цикл, но, похоже, это может дорого обойтись. Но вы не можете создавать сопоставления динамически, и если я создаю переменную состояния для этой цели, то у меня возникает проблема очистки состояния между вызовами этой функции, что делает ее дорогостоящей.
Вот что я пытался сделать, какие-либо предложения по наиболее эффективному методу дедупликации набора строк внутри чистой функции?
function dedupe(string[] memory keys) public pure returns(string[] memory) {
string[] memory deduped;
mapping(string=>bool) map;
string memory ikey;
for(uint i=0; i<keys.length; i ) {
ikey = keys[i];
if (!map[ikey]) {
map[ikey]=true;
deduped.push(ikey);
}
}
return deduped;
}