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

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

Закрытая тема
 
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Глупенький вопрос про цикл
Если я делаю так :
loop 
    set Picked = FirstOfGroup(gruppa)
    exitwhen Picked == null
    	//call BLABLABLA
	//call BLABLABLA
    call GroupRemoveUnit(gruppa,Picked)
endloop
call GroupClear(gruppa)
call DestroyGroup(gruppa)
set gruppa = null
Останется ли ссылка на перебираемых юнитов(Picked),то есть они же просто напросто удаляются из группы,но вроде как бы и не обнуляются как объекты...Скажите, вызывет ли в данном случае, данная конструкция утечку.
Старый 03.10.2012, 21:21
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
нет. Только Picked изначально нужно объявлять = null.
Старый 03.10.2012, 21:29
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
loop 
    set Picked = FirstOfGroup(gruppa)
    exitwhen Picked == null
    	//call BLABLABLA
	//call BLABLABLA
    call GroupRemoveUnit(gruppa,Picked)
endloop
//call GroupClear(gruppa)<<--это здесь на кой черт? у тебя группа и так пустая к этому моменту если ты не заметил
call DestroyGroup(gruppa)
set gruppa = null
set Picked=null//<<--а вот это надо,если переменная локальная
Nerevar добавил:
Faion:
нет. Только Picked изначально нужно объявлять = null.
а можно и не объявлять вовсе,то бишь написать так и все
local unit Picked
Старый 03.10.2012, 21:31
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
((код jass
пример из одного старого спелла урезанный
...
local unit u = null
loop
set u = FirstOfGroup(g)
if Filter(u) == true then
...
endif
call GroupRemoveUnit(g,u)
exitwhen u = null
endloop
...
))
вроде не должно быть - переменная же обновляется постоянно в 3 строке

Отредактировано asesmo, 03.10.2012 в 21:39.
Старый 03.10.2012, 21:31
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
Faion, Nerevar, спасибо все понял,а то меня это уже как 3 дня мучает.
у тебя группа и так пустая к этому моменту если ты не заметил
я просто скопипастил кусочек кода, там дальше в группу еще кое кто добавлялся...
А зачем тогда надо это?:
set Picked=null//<<--а вот это надо,если переменная локальная
если как я правильно понял
exitwhen Picked == null
Старый 03.10.2012, 21:39
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Sladkoegka:
А зачем тогда надо это?:
у тебя последний из группы в переменной остаётся, обнулять действительно в конце нужно
((код jass
а
exitwhen Picked == null
значит, что цикл кончается, когда из группы выпинывают
последнего
))
asesmo добавил:
Я вообще пользуюсь в таких целях теперь глобалкой типо udg_tempgroup etc.
Старый 03.10.2012, 21:43
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,477
Активность:
asesmo,
у тебя последний из группы в переменной остаётся, обнулять действительно в конце нужно
Спасибо все теперь дошло).
Тему Клоз.
Старый 03.10.2012, 21:53
Закрытая тема

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

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

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

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



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