Поиск…


Встроенные операторы

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



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow