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

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

Добавлено: 24 сен 2020, 18:37
Sertik
Получить имя исполняемого скрипта из самого скрипта не возможно, если только он не создан под уникальным юзером. 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
}

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