parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

moko 09.12.2022 19:49

Как можно понять каков тип вызова () или {}?
Никак. Даже парсер внутри себя не разделяет, вполне можно написать ^for[i]{1}(5){test }. Отличия () от {} с точки зрения использования результата кажется нет. Но вроде как никто от этого не страдает.
1. Есть ли вариант передачи значения в функцию с сохранением типа? (без хеша?)
Ну хеш может быть и не явным,
@test[*args]
^test2[$args]

@test2[args]
^json:string[$args]

@main[]
^test[string](1)
Как видно в результате исполнения, типы не потерялись.
2. Есть ли возможность понять тип вызова до обращения к переменной?
Выше же правильно написано про "^reflection:is[$var;...] что это code (junction)". Если там не junction, то выполнения при обращении понятно не будет. Иначе будет, при каждом обращении.