Я просто обобщаю информацию о внедрении цифрового дерева (Trie) в VBA. Я не спрашиваю, как это сделать, поэтому, пожалуйста, не публикуйте свои решения - мой конкретный вопрос о строках с фиксированной длиной в модулях классов приходит в конце этого сообщения.Публичные строки фиксированной длины
A Trie
- все об эффективности и производительности, поэтому большинство других языков программирования используют тип данных Char
для представления членов TrieNodes
. Поскольку VBA не имеет типа данных Char
, я думал о , обманом и используя fixed-length String с 1 символом.
- Примечание: Я могу придумать обход для этого, т.е. используйте
Byte
и простую функцию для преобразования междуChr()
иAsc()
или Enum, или delcare какprivate str as String * 1
, и используйте преимущества get/let, но это не главное. Оставайтесь с нами, потому что ...
В соответствии с Public Statement
on Microsoft Help Page вы не можете объявить переменную String фиксированной длины в модулях классов.
Я не могу найти любой разумного объяснения этого стеснять.
Может ли кто-нибудь объяснить, почему такое ограничение применяется к строкам фиксированной длины в модульных модулях в VBA?
Все это основано на архитектуре COM/OLE, поэтому эти ограничения существуют, потому что семантика публичного типа в открытом классе должна быть описана для любого возможного потребителя этого класса, а VBA не может сделать это для строки фиксированной длины, ее не описываемый тип (например, не аналоговый в IDL/ODL), а скорее (я бы парировал), это обычная строка с генерируемым компилятором защитным кодом. –