Кто-нибудь из уважаемых знатоков может подсказать как сформировать строку с именем функции и заставить скрипт выполнить её.
Например:
:global myFunc1 do={:log info "test"}
:global myFunc2 do={:global name "\$myFunc1"; :execute {$name}}
$myFunc1
:delay 1s
$myFunc2
Первая функция создается и работает. Вторая - нет. Что делаю не так ?
сформировать строку с именем функции и выполнить её из скрипта
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Так тоже не работает:
global myFunc1 do={:log info "test"}
:global myFunc2 do={:global name "\$myFunc1"; :execute {[:parse ":put $name"]}}
$myFunc1
:delay 1s
$myFunc2
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
viewtopic.php?f=14&t=13947
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
А зачем тебе вообще execute?
Код: Выделить всё
:global myFunc1 do={:log info "test"}
:global myFunc2 do={:global myFunc1; [$myFunc1]}
$myFunc1
:delay 1s
$myFunc2
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Да, так работает. Спасибо.
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Но видимо я переусложнил и неправильно сформулирвал задачу.
Допустим у меня в ключевом одномерном массиве fethon храняться имена разных функций с параметрами в виде строк.
Как мне выполнить их ?
Пробую так - не работает:
:global myFunc ($fetchon->$key); [$myFunc]
Может тут нужен :execute или :parse ?
Допустим у меня в ключевом одномерном массиве fethon храняться имена разных функций с параметрами в виде строк.
Как мне выполнить их ?
Пробую так - не работает:
:global myFunc ($fetchon->$key); [$myFunc]
Может тут нужен :execute или :parse ?
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Подскажите конкретнее в моём примере. Никогда не пользовался :parse и не знаю как она работает 

фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Спасибо ! Вопрос снимается, подставил :parse - Всё работает ! Не работало, т.к. нужно было ещё глобал-переменные вложенных функций отпарсить и всю конструкцию в двойные квадратные скобки заключить - первое действие сам парсинг, второе - выполнение отпарсиной команды.
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947