XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DioD

offline
Опыт: 45,184
Активность:
Проверка на "текучесть"
Значит так, я начал поднимать свой "тест проэкт" суть которого в проверке на практике гипотез о правилах Jass, увы еще не все элементарные правила общеизвестны.
Всё будет проходить в форме практических заданий для читателей (предварительно я проверяю всё сам)
Задания:
  1. Одни функции создают объекты, а других возвращают их если они уже существуют, как пример
return InitGameCache("ABC") == InitGameCache("ABC")
выясните что делает функция инициализации кеша - создаёт или возвращает кеш?
Старый 30.12.2006, 13:28
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Цитата:
создаёт или возвращает кеш?

Очевидно что она возвращает булин... Разве нет?

exploder добавил:
А все, постановку вопроса понял. Написал бы понятнее, а то выглядит как строчка кода...
Старый 30.12.2006, 13:53
DioD

offline
Опыт: 45,184
Активность:
Код:
if InitGameCache("ABC") == InitGameCache("ABC") then
call Echo("yes")
else
call Echo("no")
endif


Первое испытание предпологает подстановку функций, так что вот целая конструкция
Старый 30.12.2006, 14:02
p01nTT

offline
Опыт: 10,760
Активность:
интересно если бы это функция возвращала кэш,то какая создаёт кэш? По-моему эта функция равносильна функциям CreateUnit, CreateTrigger и т.д.
Старый 30.12.2006, 14:17
NETRAT

offline
Опыт: 83,762
Активность:
Ну, вроде бы суть в том что она всегда возвращает кеш, только вот если его нет, то предварительно его создает.
Старый 30.12.2006, 14:22
p01nTT

offline
Опыт: 10,760
Активность:
NETRAT скорее даже так.
Старый 30.12.2006, 14:27
DioD

offline
Опыт: 45,184
Активность:
Функция создаёт хэндл для доступа к хеш таблицы с данным именем, достоточно учесть что хэндл всегда разный а данные одни
Старый 30.12.2006, 15:02
NETRAT

offline
Опыт: 83,762
Активность:
Получается что при постоянном вызове, она все таки аккумулирует утечки - ибо хэндли не удаляются. При первом вызове хеш таблица создается все равно
Старый 30.12.2006, 15:09
DioD

offline
Опыт: 45,184
Активность:
вот именно, поэтому запись кеша в глобалку строго обязательна, другого способа избежать утечек нет, так как разрушение кеша уничтожает данные но не сам хэндл доступа
Старый 30.12.2006, 16:03
remal
нечто
offline
Опыт: 2,087
Активность:
это давным-давно было известно с wc3campaigns.
Старый 03.01.2007, 19:59
DioD

offline
Опыт: 45,184
Активность:
открой раздел наработок и посмотри как там юзают кеш, видимо кампы далеко
Старый 03.01.2007, 20:25
DioD

offline
Опыт: 45,184
Активность:
Ну да ладно.
Как было уже давно доказано кеш вара это хеш таблица.
Каждый кусочек информации имеет следующие определяющие.
  1. Сама хеш таблица
Хеш таблица создаётся при вызове функции InitGameCache в том случае если её нет, иначе будет возвращён хэндл доступа уже на существующую таблицу.
Хэндл доступа будет каждый раз новый, так что создавайте таблицу только однажды, что бы выяснить существует ли таблица попытайтесь записать что либо а после получить, если вернётся ноль значит таблица не существует.
  1. Миссия и Ключ, опеределяющие параметры для данных, определяют место указаной информации вхеш таблице
  2. Тип данных, строка число и реал.
Не влияет на данные никак, самое быстрое это конечно число.
Старый 05.01.2007, 00:00
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:33.