В отличии от скрипта функция знает своё имя

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

Получить имя исполняемого скрипта из самого скрипта не возможно, если только он не создан под уникальным юзером. viewtopic.php?f=14&t=11331
А функция может узнать своё имя. Иногда это бывает полезно, например, чтобы выдать в лог сообщение об ошибке или отчитаться в Телеграмм о своей работе.
Получить имя функции из самой функции можно вот так:

:put [:pick $0 1 [:len $0]]

То есть, оно всегда хранится в нулевом аргументе функции.

Проверим:


:global FuncTest do={
:local name [:pick $0 1 [:len $0]]
:log info $name
}

[$FuncTest]

В логе будет имя FuncTest

Интересно, что функция может сама и "испортить" своё имя. Например так:

:global FuncTest do={
:local name [:pick $0 1 [:len $0]]
:log info $name
:set $0 "Newname"
:log info $0
}

Но в окружении остаётся старое имя функции и порча его в аргументе вероятно не сказывается на последующей работе.


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