Enum как ключ в отображении теперь разрешен?

Sep 19 2020

Я читал, что перечисления не разрешены в качестве ключей в сопоставлениях, но когда я только попробовал, они работали на remix.ethereum.org. Было ли это разрешено в более поздних версиях Solidity?

Вариант использования, для которого я использую enum в качестве ключа, заключается в том, чтобы кодировать токены немного по-другому, для контракта с несколькими токенами. Так что это действительно упрощает чтение с помощью enum Token в качестве ключа.

enum Token { TokenName1, TokenName2, TokenName3, TokenName4 }

mapping (Token => mapping (address => uint)) balanceOf;
mapping (Token => mapping (address => mapping (address => uint))) public allowed;

Ответы

1 Johan Sep 20 2020 at 02:08

Перечисление в качестве ключей в сопоставлении было добавлено в Solidity v. 0.6.3, выпущенном 18 февраля 2020 года. Этот документ, кажется, охватывает историю языка Solidity, https://github.com/ethereum/solidity/blob/develop/Changelog.mdпрокрутите до 0.6.3.