У меня практически всегда родительский ключ это ИД, а дочерний выдуманное мной число, как правило это 1, 2 ,3... или тип key. Возникает ничем не обоснованная тревога, что такой подход розбалансирует хештаблицу. Вопрос, стоит ли использовать шаг в простое число, например, 9973 типа 1*9973, 2*9973, 3*9973... ? Значений много, особенно в хештаблице для клеток в карте 256х256, это 65536 только родительских ключей =)
Принятый ответ
Я использую осмысленные ключи, а не волшебные числа.
Например:
Например:
-- Записываем в хеш урон способности для дальнейшего использования в обработчике таймера
call SaveUnitHandle(udg_hash, h, StringHash("spellDmg"), spellDmg);
Таким образом:
ключи всегда уникальны
проще ориентироваться в коде
ключи всегда уникальны
проще ориентироваться в коде
Для оптимизации StringHash() используйте оптимизатор или программы по защите карты. Обычно они преобразуют вызовы StringHash() в числа
Другой практикой будет создание глобальных переменных как константы для часто используемых ключей.
В редакторе создаем переменную: HASH_SPELL_DMG с уникальным целочисленным значением
Получаем:
В редакторе создаем переменную: HASH_SPELL_DMG с уникальным целочисленным значением
Получаем:
-- Записываем в хеш урон способности для дальнейшего использования в обработчике таймера
call SaveUnitHandle(udg_hash, h, HASH_SPELL_DMG, spellDmg);
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.

WC3




Ред. LastUchiha
Если ключ как чисто свое значение юзаешь, то надо просто влезть в диапазон -2^31...2^31, где-то так вроде. Короче числа большие и со всякими сдвигами нормально все будет (в пределах разумного).
Ред. ttoni
Например:
ключи всегда уникальны
проще ориентироваться в коде
В редакторе создаем переменную: HASH_SPELL_DMG с уникальным целочисленным значением
Получаем: