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

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

Ответ
 
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Удаление (обнуление) локальных переменных
В конце функции трём локальным переменным типа integer присваиваю значение null - но при сохранении выдаётся ошибка: "cannot convert null to integer".

Что за бред? ведь команда
Код:
set i = null
(к примеру) должна обнулить переменную i (типа integer) или я не прав?
Старый 09.03.2008, 19:52
zer0ne

offline
Опыт: 11,219
Активность:
happy_horror
Я не знаю, может говорю бред, но может надо цифрой записать?
Старый 09.03.2008, 19:53
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Не уверен, т.к. 0 это значение (а при объявлении локальной переменной можно и не указывать ничего - значит там стоит этот самый параметр null - не задано ), даже в статьях по джазу пищется что обнуление переменных происходит именно так. Я даже в некоторых картах подобное видел.
Но у меня почему-то возникает ошибка обнаружаемая JassHelper'ом
Старый 09.03.2008, 20:08
sleepw

offline
Опыт: 8,449
Активность:
null это типа нет боевой единицы и т.п.

sleepw добавил:
сам подумай как ты интежер обнулишь если по умолчанию стоит 0.. тоесь 0 это и будет обнуление..
да и понту?.
Старый 09.03.2008, 20:34
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
happy_horror
set i = null - это для "объектовых" переменных, к примеру типа unit, item, location, и т.д.
Для integer это:
set i = 0
Для real это:
set i = 0.00, хотя просто 0 вроде тож сойдёт...
Старый 09.03.2008, 20:38
S

offline
Опыт: 43,833
Активность:
DFlyer присоединяюсь к твоим словам -
set i = null - для не-числовых переменных (unit, location, item, gamecache)
set i = 0 - для числовых (real,integer)
Старый 09.03.2008, 20:46
zer0ne

offline
Опыт: 11,219
Активность:
Моя же
Цитата:
happy_horror
Я не знаю, может говорю бред, но может надо цифрой записать?


Выходит, я прав?

zer0ne добавил:
Все, вдохновился на изучение джаса...
Старый 09.03.2008, 21:13
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
happy_horror, все скалярные типы переменных не нуждаются в обнулении.
Т.е. стринг, риал, интеджер, булиан не нужно обнулять.

Отредактировано FellGuard, 10.03.2008 в 10:37.
Старый 09.03.2008, 22:16
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Цитата:
Выходит, я прав?

Да! Давно пора к джаззу приступать! ))
Старый 10.03.2008, 10:32
adic3x

offline
Опыт: 108,439
Активность:
ТТ, либо мне кажеться, либо правду с каждым днем вопросы по жассу становять все банальней...

обнуление переменной не как не влияет на ее удаление
переменная локльная удаляеться когда функция заканчивает свое выполнение

обнуление переменных связянно с самой их реализации в жассе
обнулять надо некоторые наследники типа хендл (юниты, итемы, локации)

тип хендл - тот же инт (благодаря чему и возможен рб)
при создании реального обьекта в варе движком в отдельной таблице выделяеться новый инт, который будет являться ссылкой на этот обьект для "жасса"

этот инт может освободиться только в слдучае если обьект удален и все ссылки на него обнулены, в противном случае мы бы получили множества багов при удалении обьектов

следовательно

абузить этот механизм не стоит (т.е. счетчик ссылок)

Цитата:
все скалярные типы переменных не нуждаются в обнулении.
Т.е. стринг, риал, интеджер, булиан не нужно обнулять


строки - ссылки
реалы - ссылки (кажеться)
булы кажеться тоже...

но обнулять их действительно не нуно)
Старый 10.03.2008, 11:21
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
а для строковых: local VarMyString=""
Старый 10.03.2008, 11:45
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
а для строковых: local VarMyString=""

TT бред. строки - это инты, которые являются ссылками на уже конкретные строки. к строкам (переменным) может быть применено null.

="" просто создаст (если до это не было созданно, да строки кешируются, т.е. если такая строка уже есть новая не создастся) или присвоит соотв значение

ADOLF добавил:
FREEZE_ball, конечно звиняй что бредом называю, но дык, как начнете что то сочинять...
Старый 10.03.2008, 12:01
Ответ

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

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

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

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



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