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

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

Закрытая тема
 
kvaDrug

offline
Опыт: 1,601
Активность:
Вызов функции
У меня возникла наивная идея, не скажу какая)
Вопрос: Можно ли вызвать функцию, задав ее название переменной.(Параметры передовать не обязательно) Если да то как? (Пусть хоть через ж))
Старый 10.08.2008, 18:30
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
kvaDrug, если я тебя правильно понял... то так:
Код:
function func takes nothing returns nothing
  call BJDebugMsg("executing func")
endfunction
// . . .
function whatever takes nothing returns nothing
  local string s = "func"
  call ExecuteFunc(s)
endfunction

Функция, вызываемая таким методом, создается в новом потоке. Для такого вызова функция должна ничего не принимать в качестве аргументов и ничего не возвращать.
Старый 10.08.2008, 18:39
kvaDrug

offline
Опыт: 1,601
Активность:
Ага, ты прямо в точку! Спасибо. А для передачи данных есть кэш.
Еще, как это работает? Медлено\Быстро, создает ли утечки?
Старый 10.08.2008, 18:49
J
expert
offline
Опыт: 48,447
Активность:
kvaDrug ну... возвращаемые значения допускаются, но это безразницы
утечски создают только кривые руки
работает медлено
в топку кеш, в данном слчае передавай через глобалки

PS
также предупрежу что передача имени несуществующей функции крашит вар
Старый 10.08.2008, 18:51
kvaDrug

offline
Опыт: 1,601
Активность:
Я собираюсь одновременно вызывать много таких функций - глобалки не пройдут. Мб есть еще варианты(кроме кеша).
Старый 10.08.2008, 19:32
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
kvaDrug, одновременно и много - не самые лучшие аргументы в пользу применения ExecuteFunc в данном случае. Самое нормальное будет вызывать через call, либо по возможности инлайнить код.
Так что постановку задачи в студию. Возможно, ты пытаешься изобрести велосипед ^_^
Старый 10.08.2008, 19:54
kvaDrug

offline
Опыт: 1,601
Активность:
Просто я хочу избежать ифов в циклах и сделать расширяемую систему - именно это сейчас моя первостепенная задача.
Предположим есть некий код выращивания фруктовых деревьев. Какая-то функция отвечает за развитие дерева, из нее вызывается подфункция, которая дает цветение и созревание плодов. Для яблок - своя, для апельсинов своя. Я хочу, чтобы это дело было расширяемым, тоесть при желании можно было добавить функцию роста бананов, тогда бы для запуска банана-дерева достаточно было бы ввести в корневой функции параметр б.
Впрочем, лучше расскажите мне об особенностях if. Вдруг здесь лучше его использовать.
Старый 10.08.2008, 22:28
adic3x

offline
Опыт: 108,439
Активность:
if будет быстрее екзекута (даже несколько ифоф в бинарном дереве)
либо смотри эту тему: http://xgm.guru/forum/showthread.php?p=428312#post428312 (думаю тот же вопрос) - там и пример есть
Старый 11.08.2008, 09:49
akkolt

offline
Опыт: 13,826
Активность:
Цитата:
А для передачи данных есть кэш.

Кеш вроде бы не бесконечен, и поэтому не подходит для использования в некоторых случаях.

akkolt добавил:
kvaDrug, Это на всякий случай, просто имей ввиду.
Старый 11.08.2008, 10:21
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
Кеш вроде бы не бесконечен

? сам придумал? память небесконечно да, но причем тут кеша?

данный передавать через глобалки, благо потоки в варе вообще не так уж и много пересекаються
Старый 11.08.2008, 10:45
akkolt

offline
Опыт: 13,826
Активность:
Цитата:
? сам придумал? память небесконечно да, но причем тут кеша?

Я сказал, вроди бы, ибо сам был неуверен, и мог с чем то спутать.

akkolt добавил:
Ну простите за ложную информацию, я ошибся.
Старый 11.08.2008, 10:48
__Dark Lord__

offline
Опыт: 5,262
Активность:
Я тоже где-то слышал что кеш не бесконечен)) Всмысле есть ограничене на количество то ли столбцов, то ли полей.
Старый 11.08.2008, 12:49
J
expert
offline
Опыт: 48,447
Активность:
кеш ограничивается только рамками доступной оперативной памяти
Старый 11.08.2008, 13:33
kvaDrug

offline
Опыт: 1,601
Активность:
Поюзаю иф, посмотрю, что будет. Пока что всем спасибо.
ADOLF, хорошая тема... Потом займусь, ибо меня это тоже интересует.
Старый 11.08.2008, 19:29
Закрытая тема

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

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

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

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



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