Dart: Up and Running / Dart: Up and Running: Обзор языка. Операторы

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

## Арифметические операторы

cartrege 06.07.14 в 21:31

0

Dart поддерживает стандартные арифметические операторы:

cartrege 06.07.14 в 21:32

0

-- Таблица --

cartrege 06.07.14 в 21:33

0

Пример:

cartrege 06.07.14 в 21:32

0

assert(2 + 3 == 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5); // Результат - дробное число
assert(5 ~/ 2 == 2); // Результат - целое от деления
assert(5 % 2 == 1); // Результат - остаток от деления

cartrege 06.07.14 в 21:32

0

print('5/2 = ${5~/2} и остаток ${5%2}'); // 5/2 = 2 и остаток 1

cartrege 06.07.14 в 21:33

0

Dart также поддерживает префиксные и постфиксные инкременты и декременты:

cartrege 06.07.14 в 21:34

0

-- Таблица --

cartrege 06.07.14 в 21:34

0

Пример

cartrege 06.07.14 в 21:34

0

a = 0;
b = ++a; // Инкрементируем а перед тем, как b получит значение.
assert(a == b); // 1 == 1

cartrege 06.07.14 в 21:35

0

a = 0;
b = a++; // Инкрементируем a после того, как b получит значение
assert(a != b); // 1 != 0

cartrege 06.07.14 в 21:36

0

a = 0;
b = --a; // Декрементируем а перед тем, как b получит значение.
assert(a == b); // -1 == -1

cartrege 06.07.14 в 21:37

0

a = 0;
b = a--; // Декрементируем a после того, как b получит значение
assert(a != b) ; // -1 != 0

cartrege 06.07.14 в 21:37

0

## Операторы отношений

cartrege 06.07.14 в 21:37

0

Для проверки того, что объект **x** и объект **y** представляют одно и то же, используйте оператор **==**. В том случае, если вам нужно узнать, ссылаются ли два объекта на один и тот же объект, то используйте функцию **identical()**. Вот как работает оператор **==**:

cartrege 06.07.14 в 21:38

0

* Если **х** или **y** **null**, тогда возвращается **true**, если оба **null**, и **false**, если **null** только один из них.
* Возвращается результат метода **x.==(y)**. Верно, операторы, такие как **==**, являются методами, которые вызываются на первом операнде. Вы можете переопределить многие операторы. Для более подробной информации посмотрите статью [Переопределение операторов]().

cartrege 07.07.14 в 02:31

0

Вот пример использования операторов сравнения:

cartrege 07.07.14 в 02:32

0

## Операторы проверки типа

cartrege 07.07.14 в 02:32

0

Результатом проверки **obj is T** будет **true** в том случае, если **obj** реализует интерфейс, определенный в **T**. Например, **obj is Object** всегда **true**.

cartrege 07.07.14 в 02:34

0

Используйте оператор **as** для приведения объекта к определенному типу. Но вообще, вы должны использовать этот оператор для краткого обозначения проверки типа объекта. Например, посмотрим следующий код:

cartrege 08.07.14 в 20:07

0

if (person is Person) { // Проверка типа
person.firstName = 'Bob';
}

Вот так этот код можно сделать короче с помощью оператора **as**:

cartrege 08.07.14 в 20:08

0

> **Примечание**
>
> Эти два экземпляра кода не эквивалентны. Если **person** не *null* или не объект класса *Person*, то в первом примере ничего не произойдет, а во втором будет брошено исключение.

cartrege 08.07.14 в 20:09

0

## Операторы присвоения

cartrege 08.07.14 в 20:10

0

Вы уже видели, как можно переменной присвоить значение с помощью оператора **=**. Также можно использовать составные операторы присвоения, такие как **+=**, которые состоят из какого-то оператора и оператора присвоения.

cartrege 08.07.14 в 20:11

0

Вот как работают составные операторы присвоения:

cartrege 08.07.14 в 20:12

0

Пример ниже использует оба типа присвоения:

cartrege 08.07.14 в 20:12

0

var a = 2; // Присвоение через =
a *= 3; // Умножение и присвоение значения: a = a * 3
assert(a == 6);

cartrege 08.07.14 в 20:13

0

## Логические операторы

cartrege 08.07.14 в 20:15

0

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

cartrege 08.07.14 в 20:16

0

Пример использования логических операторов:

cartrege 08.07.14 в 20:16

0

if (!done && (col == 0 || col == 3)) {
// ...Какие-то действия...
}

cartrege 08.07.14 в 20:17

0

## Сдвиговые и побитовые операторы

cartrege 08.07.14 в 20:17

0

В Dart вы можете манипулировать битами чисел. Как правило, побитовые операторы и операторы сдвига используются с целыми числами, как показано в таблице ниже и статье "Bitwise and shift operators".

cartrege 08.07.14 в 20:19

0

Пример использования:

cartrege 08.07.14 в 20:20

0

assert((value & bitmask) == 0x02); // AND
assert((value & ~bitmask) == 0x20); // AND NOT
assert((value | bitmask) == 0x2f); // OR
assert((value ^ bitmask) == 0x2d); // XOR
assert((value << 4) == 0x220); // Сдвиг влево
assert((value >> 4) == 0x02); // Сдвиг вправо

cartrege 08.07.14 в 20:20

0

## Другие операторы

cartrege 08.07.14 в 20:20

0

Осталось несколько операторов, многие из которых вы видели в других примерах.

cartrege 08.07.14 в 20:21

0
Минутку...