Инструменты пользователя

Инструменты сайта


ru:autorun:documentation:variables

Переменные

Плагин оперирует двумя типами переменных — внутренними и переменными окружения. Внутренние переменные видимы только в плагине, а переменные окружения доступны для Total Commander и запускаемых из него программ.

Имя внутренней переменной может состоять только из латинских букв, цифр и символа подчёркивания «_». Имя внутренней переменной не может начинаться с цифры.

Имена переменных окружения могут содержать любые символы (за исключением «=»), но значения таких переменных могут быть прочитаны только с помощью функции GetEnv. Чтобы переменную окружения можно было читать как обычную переменную, её имя должно состоять только из латинских букв, цифр и символа подчёркивания «_».

:!: Переменные окружения устанавливаются только командой SetEnv и не могут быть записаны другим способом. Как следствие, они не могут служить переменными для циклов, им нельзя присваивать значения в выражениях, использовать в качестве переменной для возврата значений из команд и т. д.

Диапазон действия

Внутренние переменные в Autorun имеют диапазон действия — глобальный или локальный. Диапазон действия устанавливается с помощью ключевых слов Global и Local. Локальные переменные действуют только внутри функций, глобальные — во всем скрипте. Помимо этого внутренняя переменная может быть определена как константа с помощью ключевого слова Const, тогда после первоначального определения изменить её будет нельзя.

Global [Const] Var1 [= expr] [, Var2 [= expr] .. [, VarN [= expr]]
Local [Const] Var1 [= expr] [, Var2 [= expr] .. [, VarN [= expr]]

Примеры:

Global Const MYGLOBALCONST1 = 123, MYGLOBALCONST2 = 456
 
Func MyFunc()
  Local MyLocalVar
EndFunc

:!: Одновременно не могут существовать переменные окружения и внутренние глобальные переменные с одинаковым именем. Autorun не даст создать глобальную переменную с именем существующей переменной окружения, и наоборот.

:!: Обратите внимание, что при использовании Local в основном теле скрипта переменная всё равно будет создана в глобальном диапазоне.

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

Var1 = expr
Var2 = expr

Если ключевые слова Global или Local не заданы, то правила следующие:

  1. Если существует глобальная переменная с таким же именем, то при присваивании в рамках функции будет изменено значение этой переменной. После выхода из функции изменённое значение будет доступно для последующих операций.
  2. Если не существует, то создаётся локальная переменная.
var1 = 1
var2 = 1
 
MyFunc()
 
Func MyFunc()
    Local var1 = 123
    var2 = 123
    Global var3 = 123    
    var4 = 123
    Local var5 = 123
EndFunc
 
var1 --> 1
var2 --> 123
var3 --> 123
var4 --> undefined
var5 --> undefined

Будьте внимательны при использовании необъявленных переменных в функциях. Если планируется использовать переменную только в пределах функции, то во избежание возможных ошибок рекомендуется всегда явно объявлять её в локальном диапазоне.

Статические переменные

Статические переменные — это переменные, инициализирующиеся только один раз и сохраняющие свое значение между вызовами функции на протяжении всего времени выполнения скрипта. Имеют смысл только в функциях. Статическая переменная задается с помощью ключевого слова Static:

Static Var1 [= expr] [, Var2 [= expr] .. [, VarN [= expr]]
a = MyFunc() # --> a = 2
a = MyFunc() # --> a = 3
a = MyFunc() # --> a = 4
 
Func MyFunc()
    Static var = 1
    var = var + 1 
    Return var
EndFunc

При задании статической переменной в основном теле скрипта она ничем не будет отличаться от глобальной переменной.

:!: Обратите внимание, что при вызове функции из разных потоков будут использоваться одни и те же переменные!

Использование переменных в командном синтаксисе

Внутренние переменные задаются командой Set, а переменные окружения — SetEnv. При использовании переменных в командах Autorun не делает между ними принципиального различия и может получать их значения как из тех, так и других, однако запись из команд возможна только во внутренние переменные (очевидное исключение — SetEnv).

При использовании переменных в командах следует придерживаться простого правила: если значение переменной читается («разворачивается»), то переменная должна быть записана с использованием обрамляющих символов «%». Если же в переменную производится запись (команды Set, SetEnv и некоторые другие), то её имя записывается как есть. Пример:

Set MY_COMMANDER_PATH %COMMANDER_PATH%

В примере выше значение переменной окружения COMMANDER_PATH будет прочитано и записано в переменную MY_COMMANDER_PATH.

ru/autorun/documentation/variables.txt · Последнее изменение: 2024/04/01 13:21 — loopback

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki