Вызов функции из ресурса или переменной
-
Не понимаю как в BAS вызвать функцию из переменной либо из ресурса.
Есть несколько часто используемых функций вызывающим другие функции.
Хочу упаковать их в один общий модуль, в который будут подставляться имена функций вместо многократного вызова одной и той-же функции с разным наполнением.
Вот пример:
0_1572768731951_test.xml
-
-
Суть в том чтобы указывать имя функции ресурсом или переменной, вы же просто вызвали функцию имя которой нельзя подставить.
-
@sydhe Читайте наконец форум
Текст ссылки
но меня терзают сомнения что у вас получится, ) однако вперед Хотеть не вредно
-
И что я должен там прочесть?
Как создавать ресурс при помощи действия выполнить код?
Мне не требуется ничего создавать, мне нужно всего лишь вызвать уже существующую функцию из переменной_call_function([[FOR_TEST]],{})
но BAS отказывается выполнять код с подстановкой переменной выдавая ошибку:
TypeError: Result of expression 'f' [TEST] is not a function
при том что если точно также подставлять переменную при выводе лога - все прекрасно работает.
log([[FOR_TEST]])
-
@sydhe said in Вызов функции из ресурса или переменной:
_call_function([[FOR_TEST]],{})
Во первых это асинхронный вызов и должен быть ! в конце _call_function([[FOR_TEST]],{})!
А во вторых БАС не предназначен для работы с его API напрямую, хотя это и возможно, но там очень много нюансов.
-
Получается какие конструкции не пихай в действие выполнить код - с подстановкой значения из переменной работать оно не будет?
-
@sydhe Вы рады? Прочесть на форуме можно 90% информации о басе, о том как он работает, и о том как он не работает.
-
@tts9 said in Вызов функции из ресурса или переменной:
@sydhe Вы рады? Прочесть на форуме можно 90% информации о басе, о том как он работает, и о том как он не работает.
Не понял чему я должен быть рад, тому что вы дали ссылку на абсолютно не относящуюся к вопросу тему?
Странный вопрос...
-
@sydhe said in Вызов функции из ресурса или переменной:
Получается какие конструкции не пихай в действие выполнить код - с подстановкой значения из переменной работать оно не будет?
Будет, если знать как, но я это расписывать не стану тк это не рекомендуется разработчиком и придется провести большой ликбез.
-
@sydhe said in Вызов функции из ресурса или переменной:
И что я должен там прочесть?
Как создавать ресурс при помощи действия выполнить код?
Мне не требуется ничего создавать, мне нужно всего лишь вызвать уже существующую функцию из переменной_call_function([[FOR_TEST]],{})
но BAS отказывается выполнять код с подстановкой переменной выдавая ошибку:
TypeError: Result of expression 'f' [TEST] is not a function
при том что если точно также подставлять переменную при выводе лога - все прекрасно работает.
log([[FOR_TEST]])
Можно создать свою функцию с возможностью указывать имя вызываемой функции из переменной. Например вот так:
function _call_function_var(f, a, n) { var c = new Cycle(function(i){ if(i>0) { _break(1, false); return; } eval(f + "()"); },n); c.SetLabel("function"); c.SetLabel("argument"); c._Arguments = a; c.Start(); }
Тестовый скрипт
Правда работать такая функция будет только в режиме "запуска"
И какие баги могут всплыть при использовании подобной функции ни кто не знает..
:D
@UserTrue правильно сказал, @support крайне не рекомендует писать скрипт на методах BAS:
Писать такой код крайне не рекомендуется. Под "такой" я имею ввиду писать код целиком с использованием внутренних расширений БАС. Это приводило не раз и приведет в вашем случае к ошибкам, которые очень трудно выловить и исправить.
-
Спасибо, жаль почти не юзабельно из за того что в режиме записи не работает, потом действительно не поймешь где что багнуло.
У себя в скрипте пока пользуюсь подстановкой значений в основные переменные указывая их за пределами функции, в итоге получается почти тот-же эффект, правда с кучей ненужных переменных, но в итоге их все равно меньше чем если создавать отдельно под каждую функцию.
-
@sydhe теперь вы поняли зачем я вам давал ссылку? Непонятную ошибку 'f' ловить потом замаешься.
можете попробовать методом @Pragmatik -ка он в своей библиотеке решил эти проблемы путем обзывания функциклеров названиями которые точно никак не используются=)
Текст ссылки
Конечно немного непривычнодаже сильно непривычноно привыкаешь.
-
@tts9 said in Вызов функции из ресурса или переменной:
можете попробовать методом @Pragmatik -ка он в своей библиотеке решил эти проблемы путем обзывания функциклеров названиями которые точно никак не используются=)
Да не, спс - не особо знаком с js и думал что это просто мелочь которую забыли добавить в BAS, ведь что может быть проще создания ярлыка, а тут оказалось что это целая проблема.
На самом деле мне способ с дублированием переменных вполне подходит, в отличии от функций у меня их не так уж и много.
Жаль сразу не понял что можно и так, и зря убил почти весь день на поиски не нужного мне и опасного функционала.