Вызов функции из ресурса или переменной



  • Не понимаю как в 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();
    
    }
    

    Тестовый скрипт

    Правда работать такая функция будет только в режиме "запуска"

    0_1572976884572_9bbe3f18-3ca2-4593-bf74-05df6cbacd70-изображение.png

    И какие баги могут всплыть при использовании подобной функции ни кто не знает.. :D


    @UserTrue правильно сказал, @support крайне не рекомендует писать скрипт на методах BAS:

    Писать такой код крайне не рекомендуется. Под "такой" я имею ввиду писать код целиком с использованием внутренних расширений БАС. Это приводило не раз и приведет в вашем случае к ошибкам, которые очень трудно выловить и исправить.
    


  • Спасибо, жаль почти не юзабельно из за того что в режиме записи не работает, потом действительно не поймешь где что багнуло.
    У себя в скрипте пока пользуюсь подстановкой значений в основные переменные указывая их за пределами функции, в итоге получается почти тот-же эффект, правда с кучей ненужных переменных, но в итоге их все равно меньше чем если создавать отдельно под каждую функцию.



  • @sydhe теперь вы поняли зачем я вам давал ссылку? Непонятную ошибку 'f' ловить потом замаешься.
    можете попробовать методом @Pragmatik -ка он в своей библиотеке решил эти проблемы путем обзывания функциклеров названиями которые точно никак не используются=)
    Текст ссылки
    Конечно немного непривычно даже сильно непривычно но привыкаешь.



  • @tts9 said in Вызов функции из ресурса или переменной:

    можете попробовать методом @Pragmatik -ка он в своей библиотеке решил эти проблемы путем обзывания функциклеров названиями которые точно никак не используются=)

    Да не, спс - не особо знаком с js и думал что это просто мелочь которую забыли добавить в BAS, ведь что может быть проще создания ярлыка, а тут оказалось что это целая проблема.
    На самом деле мне способ с дублированием переменных вполне подходит, в отличии от функций у меня их не так уж и много.
    Жаль сразу не понял что можно и так, и зря убил почти весь день на поиски не нужного мне и опасного функционала.


Log in to reply
 

  • 4
  • 7
  • 2
  • 4
  • 8
  • 14
  • 5
  • 8