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 != , то приоритет оператора такой же, как и простое назначение. Другими словами, он ниже, чем у любого другого оператора.