Объекты
Объект - это сущность, инкапсулирующая в себе некий объём информации. В обычном понимании содержит свойства, позволяющие получить или изменить состояние объекта, и методы, позволяющие выполнять действия над свойствами и содержимым объекта.
В скриптовых языках обычно используются объектные типы (например, массивы) с автоматическим контролем памяти, т.е. объект существует, пока на него ссылается хотя бы одна существующая переменная, а когда таких переменных не остается, объект уничтожается. К сожалению, в силу ограничений архитектуры Autorun, в настоящее время нет возможности сделать надёжную реализацию таких типов данных. Поэтому в Autorun необходимо явно освобождать более не требующиеся объекты с помощью специальной функции Free, что по принципу работы ближе к традиционным языкам программирования.
Поскольку добавление объектов в Autorun это значительной степени вынужденная мера, из всего многообразия принципов объектно-ориентированного программирования реализована только инкапсуляция. Autorun работает только с предопределёнными встроенными объектами. Создание своих объектов, добавление и изменение свойств и методов, наследование и т.д. недоступно и не планируется.
Работа с объектами во многом схожи с принципами, применяемыми в других языках программирования. При создании объекта возвращается специальное значение (дескриптор), позволяющее обращаться к данным объекта.
List
В Autorun в настоящий момент есть только один объект - индексированный список (массив), называемый List. Массив может быть только одномерным, но его элементы могут в свою очередь содержать дескрипторы других массивов, что позволяет имитировать многомерные массивы.
Массив создается с помощью функции List, возвращающей дескриптор массива.
Доступ к элементам массива возможен путем указания индекса в квадратных скобках после имени переменной, содержащей дескриптор массива:
arr = List('Item1', 'Item2', 'Item3') a = arr[1] # ==> 'Item2' arr[1] = 'New Item' a = arr[1] # ==> 'New Item'
Список может содержать вложенные списки, но адресовать их напрямую нельзя. Необходимо предварительно сохранить дескриптор в промежуточную переменную:
arr = List('Item1', 'Item2', List('Subitem1', 'Subitem2')) # correct subarr = arr[2] a = subarr[1] # ==> 'Subitem2' # will not work a = arr[2][1]
Использование синтаксиса с квадратными скобками несовместимо с командной записью переменных, но можно использовать вычисляемые строки:
arr = Array('Item1', 'Item2') # correct MsgBox %"arr[1]" # will not work MsgBox %arr[1]%
Максимальное число элементов списка — 1048575.