Введение
Иногда может понадобиться сохранить определенный список аргументов функции, чтобы потом вызвать её с нужными параметрами.
Описание
- Сохранить аргументы с функцией в объект:
namefunction.save(arg1,arg2...) -> int obj,
где namefunction - имя оригинальной функции,
(arg1,arg2...) - её аргументы.
- Вызвать:
frun(int obj)
- Вернуть значения:
namefunction.namepar1, namefunction.namepar2,
где nameparN - имя возвращаемого параметра
- Удалить (очистить):
fdel(int obj)
---Пример---
function test_1 takes integer a, integer b returns nothing
test_1.ret(a+1,b-1)
endfunction
//! runtextmacro FUNC2("test_1","integer","integer")
//! runtextmacro RET2("test_1","integer","i1","integer","i2")
function test_2 takes integer a, integer b, real c returns nothing
printr(a+c,b+c)
endfunction
//! runtextmacro FUNC3("test_2","integer","integer","real")
function MyCode1 takes nothing returns nothing
integer save = test_1.save(1,5)
frun(save)
fdel(save)
save = test_2.save( test_1.i1, test_1.i2, 10. )
frun(save)
fdel(save)
endfunction
Выведет:
a+c 12.000; b+c 14.000
Дополнительно
о количестве аргументов
Система легко масштабируется, но с увеличением масштаба тяжело вводить архитектурные изменения. Сжать код не получилось из за словленного бага с define.
Установка
Поддерживаются функции не более чем с 6 аргументами.
Число возвращаемых параметров не более 4.
Число возвращаемых параметров не более 4.
Список поддерживаемых типов данных
Возможно расширить в любой момент по аналогии.
(string)
(destructable)
(effect)
(integer)
(item)
(lightning)
(multiboard)
(multiboarditem)
(player)
(real)
(rect)
(region)
(timer)
(trigger)
(unit)
Список изменений (02.01.2020)
- Добавлено введение, описание, дополнительно, установка;
- Добавлен деструктор. Теперь можно очистить объект-функцию;
- Исправлена очистка функций, добавлен возврат нескольких значений;
- Единый деструктор для всех функций. Переход к ExecuteFunc() от ForceEnumPlayers() из-за мультивызовов.
Скопировать папки ProtoClass, SaveFunction.
Скачать:
SaveFunction.w3m
SaveFunction.w3m
Ред. Doc
Ред. PT153
Vlod, ресурс можно скрыть.
Ред. Vlod