lvalue = rvalue;
lvalue - переменная, куда мы сохраняем данные из rvalue, она должна быть такого же самого типа.
Выражение справа вычисляется перед выражением слева.
Составное присваивание - комбинация действия оператора и присваивания: += -= *= /= = &= |= ^= <<= >>= >>>=
func(); func(arg); func(arg1, arg2); lvalue = func();
Функции выполняют действие и могут возвращать результат. Если функция имеет больше одного аргумента, то аргументы вычисляются в обратном порядке, начиная с последнего.
// неявное i intf @a = @clss(); // явное clss @b = cast(a);
Хендлы приводятся оператором cast. В случае неудачного приведения cast вернет null. Приведение ссылок работает только для обьектов, которые поддерживают хендлы, для остальных обьектов будет создаваться копия приведенного обьекта.
// неявное int a = 1.0f; // явное float b = float(a)/2;
В большинстве случаев приведение типов не обязательно для примитивных типов, так как компилятор делает это самостоятельно.
c = -(a + b);
| оператор | описание | слева | справа | результат |
+ | унарный плюс | NUM | NUM | |
- | унарный минус | NUM | NUM | |
+ | сложение | NUM | NUM | NUM |
- | вычитание | NUM | NUM | NUM |
* | умножение | NUM | NUM | NUM |
/ | деление | NUM | NUM | NUM |
% | модуль | NUM | NUM | NUM |
Плюс и минус могут использоваться в качестве унарных операторов.
NUM - любой числовой тип (например int или float).
Результат всегда имеет тип первоначальных условий. Исключение - унарный минус, который не доступен для uint.
c = ~(a | b);
| оператор | описание | слева | справа | результат |
~ | побитовое отрицание | NUM | NUM | |
& | побитовое И | NUM | NUM | NUM |
| | побитовое ИЛИ | NUM | NUM | NUM |
^ | побитовое исключающее ИЛИ | NUM | NUM | NUM |
<< | сдвиг влево | NUM | NUM | NUM |
>> | сдвиг вправо | NUM | NUM | NUM |
>>> | арифметический сдвиг вправо | NUM | NUM | NUM |
if( a and b or not c )
{
// ... что-то делаем
}
| оператор | описание | слева | справа | результат |
not | логическое НЕ | bool | bool | |
and | логическое И | bool | bool | bool |
or | логическое ИЛИ | bool | bool | bool |
xor | логическое исключающее ИЛИ | bool | bool | bool |
Булевы операторы только оценивают условия.
Каждая логическая операция может быть записана символами : || - or, && - and, ^^ - xor, ! - not.
if( a == b )
{
// ... что-то делаем
}
Операторы == и != используются для сравнения двух значений, и выдают результат в булевом значении.
if( a > b )
{
// ... что-то делаем
}
Операторы <, >, <=, и >= используются для определения отношений между двум значениями, и выдают результат в булевом значении.
if( a is null )
{
// ... что-то делаем
}
else if( a is b )
{
// ... что-то делаем
}
Операторы is и !is используются для определения одинаковых обьектов.
Действительны только для ссылочных типов, так как они проверяют адреса обьектов. Результат - булевое значение.
a = i++; // значит a = i; i = i + 1; b = --i; // значит i = i - 1; b = i;
Эти операторы могут ставиться перед (для действия до присвоения) или после (для действия после присвоения) правого значения для увеличения\уменьшения на единицу.
arr[i] = 1;
Данный оператор используется для доступа к элементу в обьекте.
В зависимости от типа обьекта выражение между [] требует разных типов.
choose ? a : b;
Если значение в choose равно true тогда выражение вернет a, иначе - b.
a и b должны быть одного типа.
object.property = 1; object.method();
object - обьект.
property - имя переменной, к которой есть доступ вне класса.
method - имя метода, который может быть вызван из обьекта.
// Создаем ссылку на обьект @handle = @object; // очищаем хендл, и удаляем обьект на который он ссылался @handle = null;
Хендлы ссылаются на обьекты.
На один обьект могут ссылаться много хендлов, обьект удаляется, когда на него не ссылается ни один хендл.
Члены обьекта, на который ссылается хендл, доступны из хендла с помощью .-оператора.
a = c * (a + b);
if( (a or b) and c )
{
// ... что-то делаем
}
Скобки используются для группировки выражений, когда приоритеты операторов не дают желаемого значения.
int value;
void function()
{
int value; // локальная переменная перегружает глобальную
::value = value; // используйте :: для доступа к глобальной переменной
}
Оператор :: используется для доступа к переменным и функциям из другой области видимости, когда в данной области видимости существуют функции или переменые с таким же названием.