В AutoIt есть только один тип данных, называемый Variant (нетипизированный тип данных). Variant может содержать как числа, так и строки, которые интерпретируются по разному в зависимости от ситуации. К примеру, если вы попытаетесь перемножить два Variant, то они будут интерпретированы, как числа, а если вы попытаетесь их объединить (оператор &), то они будут интерпретированы, как строки.
Например:
$a = 10 * 20 ; $a = 200 - число (* используется для умножения)
$a = 10 * "20" ; $a = 200 - число
$a = "10" * "20" ; $a = 200 - число
$a = 10 & 20 ; $a = "1020" - строка (& используется для объединения строк)
Если строка используется как число, происходит скрытый вызов функции Number. Поэтому, если строка не является допустимым числом, вместо неё будет подставлен 0. К примеру,
10 * "fgh" равно числу 0.
Если строка используется, как булев тип данных и она пуста "", она будет интерпретирована, как False (см. ниже). К примеру,
Not "" эквивалентно булеану True.
Числа могут быть стандартными десятичными 2, 0, и -7.
Экспоненциальная запись числа также поддерживается, поэтому можно написать 1.5e5 вместо 150000.
Целые числа также могут быть представлены в шестнадцатеричной записи, при использовании префикса 0x, как в виде 0x409, так и в виде 0x4fff (при использовании шестнадцатеричной записи поддерживаются только 32-битные числа).
Строки заключаются в "двойные" кавычки. Если необходимо использовать двойные кавычки в самой строке, дублируйте их:
"Здесь есть ""двойные кавычки""!"
Строки также можно заключать в 'одинарные' кавычки.
Можно совмещать оба типа кавычек, чтобы избежать дублирования кавычек в строках. Это позволяет легче читать и редактировать код. К примеру, если в строке необходимо использовать большое количество двойных кавычек, то удобнее заключать её в одинарные кавычки:
'Эта "строка" содержит "большое" количество "двойных кавычек" или нет?'
Это ведь проще, чем:
"Эта ""строка"" содержит ""большое"" количество ""двойных кавычек"" или нет?"
При вычислении строки, обработка переменных окружения и переменных языка согласуется со значением, установленным функцией Opt().
Булев - это логическое значение. Для него существует только два различных значения: True (Истина) и False (Ложь).
Он может использоваться при присвоении переменных, вместе с логическими операторами and,
or и not.
Примеры:
$fBoolean1 = True
$fBoolean2 = False
$fBoolean3 = $fBoolean1 And $fBoolean2
; В результате $fBoolean3 равно False
$fBoolean1 = False
$fBoolean2 = Not $fBoolean1
; В результате $fBoolean2 равно True
$iNumber1 = 0
$fBoolean1 = True
$fBoolean2 = $iNumber1 And $fBoolean1
; В результате $fBoolean2 равно False
$fBoolean1 = True
$iNumber1 = 100
$Number2 = $fBoolean1 + $iNumber1
; В результате $Number2 равно числовому значению 101
$fBoolean1 = True
$sString1 = "Тест: "
$sString2 = $sString1 & $fBoolean1
; В результате $sString2 равно строковому значению "Тест: True"
Бинарный тип может содержать двоичные данные. Значение переменной такого типа конвертируется в
шестнадцатеричную запись при использовании этой переменной, как строки.
Пример:
$bin = Binary("abc")
$str = String($bin) ; "0x616263"
Переменная типа указатель хранит в себе адрес ячейки в памяти (32-битный или 64-битный, в зависимости от используемой версии AutoIt). Значение переменной такого типа конвертируется в шестнадцатеричную запись при использовании этой переменной, как строки. Дескриптор окна (Window Handle, HWnd), возвращаемый функцией WinGetHandle, имеет тип указатель.
Следующая таблица показывает различные типы данных и их границы.
Подтип данных | Границы и примечания |
---|---|
Int32 | 32-битное знаковое число |
Int64 | 64-битное знаковое число |
Double | double-precision(?) число с плавающей точкой. |
String | Может содержать до 2147483647 символов. |
Binary | Двоичные данные, может содержать до 2147483647 байтов. |
Pointer | Указатель на ячейку памяти. 32-битный или 64-битный, в зависимости от используемой версии AutoIt. |
Некоторые функции в AutoIt могут работать только с 32-битными числами (например BitAND). Значения автоматически конвертируются в нужный тип - эти функции документированы, если необходимо.