Преобразование типов в QSP

Эта статья поможет вам разобраться в таком сложном вопросе, как преобразование типов в операции присвоения, или в выражениях.

В QSP существует всего два типа значений: числовой и текстовый. Числовой означает любое целочисленное число в пределах от -2147483648 до 2147483647; а текстовый — любую строку текста (нет, на самом деле любую. Ограничения для строк — 2 Гб текста).

Вот как выглядят такие значения:



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

Чтобы записать в числовую переменную числовое значение, мы просто пишем имя переменной, знак = и число:



Чтобы записать в текстовую переменную текстовое значение, перед именем переменной мы обязательно ставим знак $.



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



Если мы попытаемся присвоить числовой переменной текстовое значение, плеер попытается преобразовать текстовое значение в числовое, но если преобразование невозможно, на экране появится ошибка.


только для команды 2 не удастся выполнить преобразование типа


так выглядит ошибка, если попытаться засунуть текстовое значение в числовую переменную

Всё становится гораздо интереснее, если мы имеем дело не с отдельными значениями, а с выражениями.

Например, если мы попытаемся сложить два числа, то результатом сложения будет третье число:



Если мы попытаемся «сложить» две строки, то мы их просто «склеим» (в программировании это называется конкатенация):



Но что будет, если мы попытаемся сложить число и строку?

А тут произойдёт вот что.

Если хотя бы одно из значений в выражении — числовое, плеер попытается все значения преобразовать в числовые и вычислить выражение:



Если преобразование не удастся, то выполняется конкатенация:



Строки можно только «складывать» или сравнивать, поэтому если вы попытаетесь проделать с ними какие-то другие штуки, плеер выдаст ошибку о несоответствии типов данных:



Однако, если возможно преобразование всех строк в числа, то можно сделать так:



Таким образом, плеер обязательно преобразует тип к необходимому, если это возможно, особенно для операций присвоения.

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

Старайтесь не использовать строковые и числовые значения в одном выражении, либо приводите их к требуемому типу с помощью функций $str и val:



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



Оригинал статьи в вк.

Нет комментариев