Scala Language
Операторы в Scala
Поиск…
Встроенные операторы
Scala имеет следующие встроенные операторы (методы / языковые элементы с предопределенными правилами приоритета):
Тип | Условное обозначение | пример |
---|---|---|
Арифметические операторы | + - * / % | a + b |
Операторы отношения | == != > < >= <= | a > b |
Логические операторы | && & || | ! | a && b |
Побитовые операторы | & | ^ ~ << >> >>> | a & b , ~a , a >>> b |
Операторы присваивания | = += -= *= /= %= <<= >>= &= ^= | = | a += b |
Операторы Scala имеют то же значение, что и в Java
Примечание : методы, заканчивающиеся на :
привязка к правой (и правой ассоциативной), поэтому вызов со list.::(value)
может быть записан как value :: list
с синтаксисом оператора. ( 1 :: 2 :: 3 :: Nil
совпадает с 1 :: (2 :: (3 :: Nil))
)
Перегрузка оператора
В Scala вы можете определить своих собственных операторов:
class Team {
def +(member: Person) = ...
}
С приведенными выше определениями вы можете использовать его так:
ITTeam + Jack
или же
ITTeam.+(Jack)
Чтобы определить унарные операторы, вы можете префикс его с помощью unary_
. Например, unary_!
class MyBigInt {
def unary_! = ...
}
var a: MyBigInt = new MyBigInt
var b = !a
Приоритет оператора
категория | оператор | Ассоциативность |
---|---|---|
постфикс | () [] | Слева направо |
Одинарный | ! ~ | Справа налево |
Multiplicative | * / % | Слева направо |
присадка | + - | Слева направо |
сдвиг | >> >>> << | Слева направо |
реляционный | > >= < <= | Слева направо |
равенство | == != | Слева направо |
Побитовое и | & | Слева направо |
Побитовое xor | ^ | Слева направо |
Побитовое или | | | Слева направо |
Логические и | && | Слева направо |
Логические или | || | Слева направо |
присваивание | = += -= *= /= %= >>= <<= &= ^= | = | Справа налево |
запятая | , | Слева направо |
Программирование в Scala дает следующий контур, основанный на 1-м символе оператора. Eg >
- 1-й символ в операторе >>>
:
оператор |
---|
(все другие специальные символы) |
* / % |
+ - |
: |
= ! |
< > |
& |
^ |
| |
(все буквы) |
(все операторы присваивания) |
Единственное исключение из этого правила касается операторов присваивания , например, +=
, *=
и т. Д. Если оператор заканчивается равным символом (=) и не является одним из операторов сравнения <=
, >=
, ==
or !=
, то приоритет оператора такой же, как и простое назначение. Другими словами, он ниже, чем у любого другого оператора.