Оператор — базовая часть языка программирования, обозначающая некоторое действие, которое предстоит сделать с данными (операндами). То же: operator.
Например, есть арифметические операторы. С помощью оператора +
складываются два числа, стоящие слева и справа от оператора. В некотором смысле операторы повышают читабельность кода. Например, можно было бы обойтись без того же оператора +
. Мы бы тогда складывали числа с помощью вызова функций: sum(5,5)
вместо 5+5
. Но для человека более привычным является использование плюса.
Операторы обладают разным приоритетом. Например, умножить обладает большим приоритетом, чем сложить. Поэтому 5+5*5
всегда будет равно 30, а не 50.
Операторы бывают унарные и бинарные. Первым нужен только один операнд, вторым — два.
Операторы различаются по ассоциативности. Некоторые, например +
, выполняются слева направо. Другие, например ++
, выполняются справа налево. 1 + 2 + 4
выполнится следующим образом: сначала к единице прибавится двойка, а потом к получившейся тройке прибавится четвёрка.
Если мы желаем изменить порядок операций, какую-то часть выражения можно заключить в круглые скобки. У нас могут быть функции с побочным эффектом, и даже такие простые выражения вроде Foo(X) + Foo(Y) + Foo(Z)
могут потребовать изменения порядка: Foo(X) + (Foo(Y) + Foo(Z))
(или просто переставить слагаемые).
У операторов ++
и --
порядок безусловно надо учитывать.
$ erl +pc unicode
1> "мама" ++ "мыла" ++ "раму".
"мамамылараму"
2> "мама" ++ "раму" ++ "мыла".
"мамарамумыла"
3> "раму" -- "мыла" -- "мама".
"раму"
4> "раму" -- "мама" -- "мыла".
"ру"
Рейтинг операторов (сначала идут обладатели высокого приоритета):
:
#
+
(унарный), -
(унарный), bnot
, not
/
, *
, div
, rem
, band
, and
(у всех левая ассоциативность)+
, -
, bor
, bxor
, bsl
, bsr
, or
, xor
(у всех левая ассоциативность)++
, --
(у обоих правая ассоциативность)==
, /=
, =<
, <
, >=
, >
, =:=
, =/=
andalso
orelse
=
, !
(правая ассоциативность)catch
© Алексей Карманов, 2024.