Что-то более похожее на реальные условия в карте - много переборов маленьких групп. Заодно и доля занимаемая самим перебором в сравнении с вызовом нативок возрастет.
Если в кратце, то функция является объектом, на создание которого и выделяется память. Так же все переменные из области видимости попадают в замыкание, на которое тоже нужна память.
Формулировка не совсем верная, ведь именованная локальная функция тоже получит замыкание на свою область видимости - замыкания никак не связаны с анонимностью и именованностью.
Дополнил
Обычно в функцию перебора юнитов нужно передать дополнительные аргументы, например кастера способности. Анонимная функция получит его в замыкании из своей области видимости:
local caster = 'caster'
ForGroup(whichGroup, function()
print(caster) --> переменная доступна и будет выведено "caster"
end)
Именованные функции используют для того, что вызывать их из разного места кода, и потому часто случается такая ситуация
ForGroupFunc = function() -- функция глобальна для использования из разных участков кода
print(caster) --> здесь переменная не видна ибо в области видимости функции её нет и будет выведено "nil"
end
local caster = 'caster' -- чтоб передать эту переменную в функцию, нужно её сделать глобальной
ForGroup(whichGroup, ForGroupFunc)
Что за тупое именование функций NzrRound(n)? Назвали бы math.round и не мучались.
Писать EmmyDoc к аргументам и возвращаемым значениям признак хорошего тона, можете посмотреть как сделано здесь.
Когда уже выпустят кампанию, где есть пропуск одной реплики? Моя средняя скорость чтения ~250 слов/минута и меня бесит ждать, когда текст я прочитал. Теряется нить повествования и прочие умные слова.
Как закончишь с локациями, сделай убивание тупых BJ
Обязательно, одну уже переписал и заинлайнил функции, чтоб лишний раз не вызывать)
function CreateNUnitsAtLocFacingLocBJ(count, unitId, whichPlayer, loc, lookAt)
GroupClear(lastCreatedGroup)
local face = math.deg(math.atan(lookAt[2] - loc[2], lookAt[1] - loc[1]))
for i = 1, count do
lastCreatedUnit = CreateUnit(whichPlayer, unitId, loc[1], loc[2], face)
GroupAddUnit(lastCreatedGroup, lastCreatedUnit)
end
return lastCreatedGroup
end
» WarCraft 3 / Перехват рандома в варкрафте
Ред. nazarpunk
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / Утекает ли плавающий текст?
Ред. nazarpunk
» Гильдия «Черамор» / Библиотека Lua-Warcraft3
Писать EmmyDoc к аргументам и возвращаемым значениям признак хорошего тона, можете посмотреть как сделано здесь.
Ред. nazarpunk
» Warcraft III: Fall of Dalaran / Warcraft III: Fall of Dalaran
» Warcraft III: Fall of Dalaran / Warcraft III: Fall of Dalaran
» WarCraft 3 / Нет описания способности
» WarCraft 3 / Прямоугольная область поражения
» WarCraft 3 / Lua в текущих реалиях
» WarCraft 3 / [lua] Предотвращаем создание утечек GUI
» WarCraft 3 / [lua] Предотвращаем создание утечек GUI
Ред. nazarpunk
» WarCraft 3 / Нестандартные Модели.
Ред. nazarpunk
» WarCraft 3 / [lua] Предотвращаем создание утечек GUI
Ред. nazarpunk
» WarCraft 3 / [lua] Предотвращаем создание утечек GUI
» WarCraft 3 / [lua] Предотвращаем создание утечек GUI
» WarCraft 3 / ZinC: Кровавый взрыв
» WarCraft 3 / Периодически пропадает плавающий текст
» WarCraft 3 / Перенос всех нестандартных объектов из карты
» Мир безумного / Проект: Гнев (ZM Project) - Test gamplay 1 (demo)
» WarCraft 3 / Размножение
» WarCraft 3 / Набор предметов для проэкта "Последняя Надежда"