Небольшое дополнение к исслеованию переменных

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

Когда то, Чупакабра писал вот такую статью, которая до сих пор актуальна и помогает всем скриптописателям Рос:

https://habr.com/ru/post/270719/

Небольшое дополнение к ней:

1. Объявляем переменную

:global Var

2. Какой у неё тип, если присвоения не было ? Должен быть nil согласно руководству по Рос. Однако, как и написано в исследовании Чупакабры нет - будет nothing

:put [:typeof $Var]

3. Однако, если сделать вот так:

:global Var []

то, тип переменной будет как и положено nil, так как выполнение пустого действия всегда дает nil (Цитата по Чупакабре)

:put [:typeof $Var]

4. Присвоение значений, ну это известно, традиционно при объявлении или с помощью :set

:global Var "val"

или

:set $Var "val"

* или, оказывается можно более экзотично !:

/system script environment set [find name="Var"] value="val"


5. Пойдем дальше. Как удалить переменную ? Если она локальная удалять не нужно - сама пропадёт, когда скрипт "выйдет" из области видимости {}. Если глобальная - конечно, когда надобность в переменной пропадает - лучше очищать, чтобы не засоряли память, тем, более, что переменная может содержать функцию.
Удалить глобальную переменную можно несколькими способами:

:set Var (:nothing); - присвоением "ничего"

или "совсем реально ничего" вообще не указывая что присваиваем (согласно Вики)

:set Var

или

:global Var (:nothing); - "пересозданием со значением ничего"

Кстати, внутрь круглых скобок можно поместить просто ":" или пустую (необъявленную переменную), результат будет тот же.

или вот так, не совcем традиционно:

/system script environment remove [find name="Var"]

Обнулить (очиcтить значение), как уже ясно из вышеизложенного можно так:

:global Var []

А, извращенно и экзотично, вот так:

:global Clear (:nothing)
/system script env set [find name="Var"] value=$Clear


А так можно удалить все глобальные переменные из окружения:

/system script environment remove [find]

А вот так суперэкзотично можно узнать, есть в окружении глобальные переменные вообще или нет:

:if ([/system script env find .id!=0]) do={:put "Variables are present in environment"} else= {:put "Environment is empty"}

Фух ... Ну как то вот так ... Дополнения приветствуются.


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