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

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


ru:beta

Бета-функционал

Циклы

В Autorun реализовано два типа циклов.

For .. Next

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

For var = <expr> To <expr> [Step <expr>]
...
Next

Пример

For var = 1 To 4
  MsgBox(var) --> 1 --> 2 --> 3 --> 4
Next

While.. Wend

Цикл по условию. Выполняется, пока условие истинно.

While <expr>
...
Wend

Пример

var = 3
While var > 0
  MsgBox(var) --> 3 --> 2 --> 1
  var = var - 1
Next

:!: Внимание! Не создавайте пустых циклов и долго выполняющихся циклов без использования задержки. Это может привести к повышенной нагрузке на процессор.

Переменные

Переменные в Autorun могут быть глобальные и локальные. Локальные переменные имеют смысл только внутри функций.

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

Global - переменная будет глобальной. В основном теле скрипта может быть опущена, т.к. в нем переменные всегда глобальные. В функции принудительно устанавливает глобальный диапазон действия переменной. Если переменной с таким именем еще не было в глобальном диапазоне, то она создается, если была - устанавливается новое значение.

Local - переменная будет локальной. В основном теле скрипта смысла не имеет. В функции принудительно устанавливает локальный диапазон действия переменной, что позволяет перекрыть глобальную переменную с тем же именем.

Const - переменная будет константой. В основном имеет смысл использовать совместно с Global и/или в основном теле скрипта, поскольку значение локальной переменной исчезает при выходе из функции. После первичного создания переменной значение константы изменить нельзя.

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

Var1 = expr
Var2 = expr

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

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

Функции

Пользовательские функции задаются с помощью ключевых слов Func с последующим именем функции и списком параметров в скобках, и EndFunc. Параметры разделяются запятой.

Вызов функции производится по имени аналогично вызову любой встроенной функции или команды. Если имя вызываемой функции неизвестно на этапе запуска, вызов можно производить с помощью функции Call или Eval.

В функциях могут быть заданы 4 вида формальных параметров:

  • Простой параметр
  • Параметр «по ссылке»
  • Параметр со значением по умолчанию
  • Открытый список параметров

Простой параметр

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

MyFunc(123+456)

Func MyFunc(var)
    MsgBox(var) --> 579
EndFunc

Параметр "по ссылке"

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

a = 1

MsgBox(a) --> 1

MyFunc(a)

Func MyFunc(ByRef var)
    MsgBox(var) --> 1
    var = 123
EndFunc

MsgBox(a) --> 123

Параметр со значением по умолчанию

Этот параметр задается именем переменной с присвоением значения по умолчанию. Это позволяет опускать при вызове функции часть параметров. Параметры этого типа должны идти после параметров двух предыдущих типов, но перед открытым списком параметров. Если актуальный параметр будет задан, то переменной будет присвоено его значение, если опущен - будет присвоено значение по умолчанию.

MyFunc("text")
MyFunc("text", "My title")

Func MyFunc(var1, var2 = "Default title")
    MsgBox(var1) --> text
    MsgBox(var2) --> Default title --> My title
EndFunc

Открытый список параметров

Параметр задается специальным значением «…» и позволяет задавать неограниченный список входных параметров. Этот параметр должен находиться в самом конце списка формальных параметров, всё что после него будет проигнорировано. Получение параметра производится с помощью функции Args:

MyFunc(123, 456, 789)

Func MyFunc(...)
    For i = 1 To Args()
        MsgBox(Args(i), i) --> 123 --> 456 --> 789
    Next
EndFunc

Args

Функция предназначена для получения параметров функции, переданных открытым списком.

Args([индекс])

Параметры

индексИндекс получаемого параметра. Начинается с 1. Если опущен, возвращается число переданных параметров.

Call

Call FuncName [ Param1 [ Param2 .. [ ParamN]]]
Call("FuncName" [, Param1 [, Param2, .. [, ParamN]]])

Параметры

FuncNameИмя вызываемой функции.
ParamИмя вызываемой функции.

Возвращаемое значение

Значение, возвращаемое функцией, имя которой задано первым параметром (только в функциональной записи).

Пример

a = "MsgBox"
Call(a, "Text", "Title")

Примечания

Используйте эту функцию только при необходимости вызова функции или команды, имя которой нужно передавать в переменной (т.е. на этапе написания скрипта не определено, какую именно функцию нужно будет запускать). В остальных случаях предпочтительнее прямой вызов функции.

Eval

Вычисляет выражение, заданное строкой.

Eval "expression"
Eval("expression")

Параметры

«expression»Строка с вычисляемым выражением.

Возвращаемое значение

Значение, полученное в результате вычисления заданного строкой выражения (только в функциональной записи).

Пример

a = 4
Eval("1+2+3+a") -- > 10

Примечания

Функция также может выполнять другие функции, заданные в строке. Используйте эту функцию только при необходимости вычисления выражения, заданного строкой. В остальных случаях предпочтительнее прямая запись выражения.

ru/beta.txt · Последнее изменение: 2020/06/02 13:50 — loopback

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki