Операторы

Оператором является обозначение, которое применяется к определенным данным (таким, как числа или строки) и сообщает системе, что с ними нужно делать. Как только система выполнила оператор для данных (т.е. как только оператор "сработал"), вы всегда получаете какой-либо результат или значение. Общие операторы включают + (сложение, как в1+1), - (вычитание, как в 2-1) и т.д.

Одно выражение может содержаться несколько операторов, таких как 1 + 2 * 3. Операторы вычисляются в определенной последовательности - не так, как они записаны в строке (слева направо). Например, 1 + 2 * 3 вычисляется в 7, а не в 9, потому что оператор умножения имеет высший приоритет по сравнению с оператором сложения. Последующая таблица также показывает приоритет операторов - операторы, расположенные вверху таблицы, вычисляются первыми при вычислении выражения.

Приоритетнось операторов

Описание

Синтаксис

Пример

Типы аргументов

Тип результата

Скобки

()

(1 + 2) * 3

Any

Any

Побитовый НЕ оператор

~

~{a}

Numeric

Numeric

Логический НЕ оператор

!

!{x} > 0

Boolean

Boolean

Мультипликативные операторы

*   /   %

{d} * 3

Numeric

Numeric

Аддитивные операторы

+   -

{b} + {c}

Numeric (или String для "+")

Numeric (или String для "+")

Операторы битового сдвига и битового сдвига без знака

>> << >>>

{a} >> 2

Numeric

Numeric

Операторы отношения

>   <   >=   <=  

{a} >= 123

Numeric

Boolean

Операторы равенства и совпадения с регулярным выражением

==   !=   ~=

{name} == "test"

Любой (Strings только для "!=")

Boolean

Битовый И оператор

&

{z} & 0xFFFF

Numeric

Numeric

Битовый "исключающий ИЛИ" оператор

^

{y} ^ 0x1A

Numeric

Numeric

Битовый ИЛИ оператор

|

{x} | 0xFF

Numeric

Numeric

Логический И оператор

&&

{z} = 1 && {x} > 0

Boolean

Boolean

Логический ИЛИ оператор

||

{x} > 5 || {y} < 1

Boolean

Boolean

Условный оператор

? :

{y} > 5 ? 1 : 0

Boolean для первого аргумента, любой тип для других аргументов

Любой

Скобки

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

Пример:

1 + 2 * 3 вычисляются в 7

но        

(1 + 2) * 3 вычисляются в 9

Условный оператор

Условный оператор, ?:, может использоваться для условного вычисления выражений. Оператор состоит из трех аргументов. Первый аргумент вычисляется и возвращает значение типа Boolean. Если он возвращает TRUE, результатом оператора станет второй аргумент. Если первый аргумент является FALSE, результатом оператора станет третий аргумент.

condition ? value_if_true : value_if_false

Пример:

2 * 2 == 4 ? "Yes" : "No"

Разрешается в строку "Yes".

Оператор совпадения с регулярным выражением

Оба аргумента являются строками. Оператор возвращает true, если первая строка совпадает с регулярным выражением, определяемым вторым аргументом.

Если нет совпадения или частичного совпадения, операция оценивается как FALSE.

Examples:

Example

Evaluation Value

Notes

"Example" ~="\\w+"

TRUE

Обратите внимание, что символ “\” должен быть экранирован в строке регулярного выражения.

"Example" ~="Exam"

FALSE

Хотя было найдено частичное совпадение, Exam, полная строка не совпала, поэтому возвращаетсяFALSE.

"Example String" ~="\\w+"

FALSE

Есть два совпадения для этого регулярного выражения в первом аргументе. Это оценивается как FALSE, потому что регулярное выражение не полностью совпадает с первым аргументом.

3/5~="\\d+\\.6"

TRUE

Первый аргумент оценивается как число с плавающей запятой (Float), затем приводится к строке (String) для получения "0.6", которое точно соответствует регулярному выражению.

25 ~= 5*5

TRUE

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

295 ~= 5/2

TRUE

Второй аргумент оценивается как 2.5, который приводится к строке (String), и так как символ . является шаблоном, он соответствует295.

Аддитивный оператор

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

Пример:

"test" + 123

Имеет результат "test123".