Open Yobas opened 9 months ago
Логика лямбд (создание, подключение) готово. Теперь нужно настроить кодогенерацию для них
Генератор готов
Осталось:
Реализовано
Забыл... В объектных функциях (делегатах) не передается контекст. Впринципе пока нигде нет мест, где такие штуки могли бы пригодится, но доделать всё же стоит.
для определения лямбд нужна сигнатура: function[RESERVED=RET_TYPE=PARAMS] RET_TYPE: anytype/container PARAMS: anytype/container with delimeter @
Примеры:
function[anon=int=bool@string@float@GameObject^]
- анонимная функция с возвращаемым значением int и 4 параметрамиfunction[anon=string=array(int)@enum.TestEnum]
- анонимная функция с возвращаемым значением string и 2 параметрами: array[int], enum.TestEnumfunction[anon=null=dict(string@float)@array(function_ref)]
- анонимная функция без возвращаемого значения и с 2 параметрами: dict[string,float], function_reffunction[anon=null]
- функция без параметров и без возврата значенияТипы функций
Для гибкого распределения принадлежности функций в начале сигнатуры указывается тип функции. Для примера типы функций могут быть следующие:
Передача объекта и определение типа
Функции типа: obj, event, eventlist имеют в себе ссылку на вызывающий объект. Нужно просто менять тип объекта с автоматическим обновлением сигнатуры. Варианты обновления типа объекта:
Ссылки на функции и низкоуровневый вызов
Добавляется новый тип: function_ref для передачи функции с любым количеством параметров и возвращаемым значением. Для доступа и вызова анонимных ссылочных функций (полученных как function_ref) добавляются новые узлы: