Страница 1 из 1

сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 12:04
Sertik
Кто-нибудь из уважаемых знатоков может подсказать как сформировать строку с именем функции и заставить скрипт выполнить её.

Например:

:global myFunc1 do={:log info "test"}
:global myFunc2 do={:global name "\$myFunc1"; :execute {$name}}
$myFunc1
:delay 1s
$myFunc2

Первая функция создается и работает. Вторая - нет. Что делаю не так ?

Re: сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 12:38
Sertik
Так тоже не работает:

global myFunc1 do={:log info "test"}
:global myFunc2 do={:global name "\$myFunc1"; :execute {[:parse ":put $name"]}}
$myFunc1
:delay 1s
$myFunc2

Re: сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 12:51
pepelxl
А зачем тебе вообще execute?

Код: Выделить всё

:global myFunc1 do={:log info "test"}
:global myFunc2 do={:global myFunc1; [$myFunc1]}
$myFunc1
:delay 1s
$myFunc2

Re: сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 13:37
Sertik
Да, так работает. Спасибо.

Re: сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 15:10
Sertik
Но видимо я переусложнил и неправильно сформулирвал задачу.

Допустим у меня в ключевом одномерном массиве fethon храняться имена разных функций с параметрами в виде строк.

Как мне выполнить их ?

Пробую так - не работает:

:global myFunc ($fetchon->$key); [$myFunc]

Может тут нужен :execute или :parse ?

Re: сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 15:49
pepelxl
Parse

Re: сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 15:57
Sertik
Подскажите конкретнее в моём примере. Никогда не пользовался :parse и не знаю как она работает :ny_tik:

Re: сформировать строку с именем функции и выполнить её из скрипта

Добавлено: 23 сен 2020, 17:07
Sertik
Спасибо ! Вопрос снимается, подставил :parse - Всё работает ! Не работало, т.к. нужно было ещё глобал-переменные вложенных функций отпарсить и всю конструкцию в двойные квадратные скобки заключить - первое действие сам парсинг, второе - выполнение отпарсиной команды.