Типы значений
Каждая переменная, аргумент и результат содержит значение ровно одного из пяти типов. У переменной нет фиксированного типа. Она содержит то, что ей присвоили последним.
| Тип | Содержит | Откуда берётся | Истинно, когда | Как показывается (StringFormat) |
|---|---|---|---|---|
| Bool | true / false | литералы, сравнения, !, &&, ||, многие встроенные функции | равно true | true / false |
| Integer | 64-битное целое число со знаком | целые и шестнадцатеричные литералы, константы, целочисленная арифметика | не равно 0 | 42, -7 |
| Real | 64-битное число с плавающей точкой | вещественные литералы, любая арифметика с участием Real | не равно 0.0 | всегда шесть знаков после запятой: 0.500000 |
| Text | строка Юникода | строковые литералы, + над двумя Text, встроенные функции для текста | не пусто | как есть |
| Window | дескриптор окна (HWND) | WindowGetActive, ContextGetWindow, WindowFindByTitle, … | не пустой | 0x00000000000A0B2C |
«Истинность» — это то, как if, условия for, !, && и || читают значение, не являющееся
Bool. Благодаря ей повседневные проверки работают без сравнения с чем-либо:
w = WindowFindByTitle("Calculator");
if (!w) UtilityPrint("Calculator isn't open"); // пустой дескриптор ложен
text = StringTrim(ClipboardGetText());
if (text) UtilityPrint("Clipboard has: " + text); // пустой Text ложен
Значений null, undefined или «ничего» нет. Встроенная функция, которая ничего не нашла, возвращает
пустой Text, 0, -1, false или пустой Window, в зависимости от типа результата. Проверяйте то
значение, которое она использует.