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

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Кто-нибудь из уважаемых знатоков может подсказать как сформировать строку с именем функции и заставить скрипт выполнить её.

Например:

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

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Так тоже не работает:

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

А зачем тебе вообще execute?

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

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


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Да, так работает. Спасибо.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Но видимо я переусложнил и неправильно сформулирвал задачу.

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

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

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

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

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

Parse


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить