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

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

Ответ
 
Celebrate

offline
Опыт: 849
Активность:
constant function
Что ето такое и с чем это едят? :)
Чем отличается от обычных function?
Старый 20.05.2006, 12:18
DioD

offline
Опыт: 45,134
Активность:
Для удобства, отличаются тем что не изменяются, это константы.
Старый 20.05.2006, 13:41
zibada

offline
Опыт: отключен
функции, которые не вызывают внутри себя никаких не-constant функций.
(т.е. при нескольких вызовах с одинаковыми аргументами возвращают одинаковое значение..)
вроде так.

например (из common.j):
OrderId - константа, т.к. результат зависит только от аргумента, и ни от чего еще.
а вот CreateUnit очевидно, не константа, т.к. возвращаемое значение (handle нового юнита) всякий раз новое.

зачем это надо, и есть ли от этого какой-то видимый эффект - вопрос открытый =)
Старый 20.05.2006, 14:22
NETRAT

offline
Опыт: 83,712
Активность:
Гм, обычно константные функции сродни макроопределениям, однако как это inJass - хез
Старый 20.05.2006, 23:08
Медведь
ФффыррфррфффФФфф!
offline
Опыт: 21,702
Активность:
По моему константные функции это функции которые просто возвращают значение - не берут аргументов и ничего не рассчитывают. То есть в них напрямую указано

return
Код:
значение


90 процентов что я неправ. Хотя хз
Старый 20.05.2006, 23:52
zibada

offline
Опыт: отключен
конечно, неправ..

from common.j:
Код:
constant native ConvertRace                 takes integer i returns race
constant native ConvertAllianceType         takes integer i returns alliancetype

и т.д.


хм.... там же увидел интересные вещи...

Код:
constant native GetFilterUnit       takes nothing returns unit
constant native GetEnumUnit         takes nothing returns unit

constant native GetFilterDestructable   takes nothing returns destructable
constant native GetEnumDestructable     takes nothing returns destructable

constant native GetFilterItem           takes nothing returns item
constant native GetEnumItem             takes nothing returns item

constant native GetFilterPlayer     takes nothing returns player
constant native GetEnumPlayer       takes nothing returns player

constant native GetTriggeringTrigger    takes nothing returns trigger
constant native GetTriggerEventId       takes nothing returns eventid
constant native GetTriggerEvalCount     takes trigger whichTrigger returns integer
constant native GetTriggerExecCount     takes trigger whichTrigger returns integer


м.быть, это функции, результат которых при тех же аргументах не меняется на протяжении работы потока?
как-то эти строчки немного озадачили...
Старый 21.05.2006, 00:17
Celebrate

offline
Опыт: 849
Активность:
А кто-нибудь на оффициальном сайте близзов зареген? (там ведь без лецензионного диска не зарегишся :cry: )
Спросите, авось снизойдут близзы до простых смертных джассеров :)
Старый 21.05.2006, 00:21
DioD

offline
Опыт: 45,134
Активность:
А )(4<'> тебе на офф сайте близов джазом не занимаются.
Там вооще безполезно что-либо писать.

DioD добавил:
Любителям констант надо поискать JESP стандарт, там написано что к чему.
Старый 21.05.2006, 10:11
Celebrate

offline
Опыт: 849
Активность:
DioD на офф сайте близзов не отвечают на вопросы по jass-у?

На кой тогда они этот сайт открывали?!
Старый 21.05.2006, 12:05
Toadcop

offline
Опыт: 54,313
Активность:
Celebrate на АСМ некоторые операнды только с константыним значениями работают...
лично меня этот вопрос тоже уже давно интересует ! я думаю что константы легче вычесляютьса т.е. дают минимум + производительности... хотя это догадка поэтому я РБ функции все конс. сделал.
Старый 21.05.2006, 13:48
DioD

offline
Опыт: 45,134
Активность:
Лично я понял что константы обсчитываются один раз и зависают в памяти навсегда, таким образом даётся макс производительность.
Старый 21.05.2006, 15:53
Toadcop

offline
Опыт: 54,313
Активность:
DioD ага ?! типа РБ ссылка такой функ. будет всегда одной и тоже !!!
Старый 21.05.2006, 16:02
vlad_C0M
Босс DarkSkyTeam
offline
Опыт: 10,459
Активность:
Toadcop : lol И возвращать будет всегда одно и тоже :D
Старый 25.05.2006, 01:27
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Ниче особо вразумительного по константам не скажу, знаю только, что в спеллах удобно выносить константы вверх, и потом уже в коде спелла к ним обращаться. Хез, зачем это надо, очевидно для удобства изменения параметров спелла, типа имитация полей ОЕ, не знаю, правда, можно ли потом это как-то туда вживить.
Старый 27.05.2006, 12:26
mr DOS

offline
Опыт: 50
Активность:
Если общая концепция языка близка к C++ то атрибут constant будет ИМХО иметь то же значение что и const для функции-элемента класса в си. То биш функция в процессе работы не меняет никаких полей объекта или переменных игры.
Старый 30.05.2006, 09:43
DioD

offline
Опыт: 45,134
Активность:
В эти функция нельзя добавлять действия или условия, а переменные объявленые константами невозможно изменить.
Старый 30.05.2006, 11:46
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
В эти функция нельзя добавлять действия или условия, а переменные объявленые константами невозможно изменить.
- и что ? это понятно здесь расматриваетьса смысл ! и + этого всего дела ! я думаю что если есть возможность то лутче её делать константной (функцию) и в принципе переменые тоже =) т.к. Близзы не идиоты ;) если юзают константы !
Старый 30.05.2006, 15:41
DioD

offline
Опыт: 45,134
Активность:
Зачем делать функции динамическими если они не меняются, вот и весь смысл.
Старый 30.05.2006, 17:19
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Может пережиток констаных методов классов си? Типа для все объектов...
Старый 30.05.2006, 18:39
DioD

offline
Опыт: 45,134
Активность:
Запросто, особенно если учесть на чём основан джаз и написана игра.
Старый 30.05.2006, 21:18
Ответ

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

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

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

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



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