Scala Language
Operatorzy w Scali
Szukaj…
Wbudowane operatory
Scala ma następujące wbudowane operatory (metody / elementy językowe z predefiniowanymi regułami pierwszeństwa):
Rodzaj | Symbol | Przykład |
---|---|---|
Operatory arytmetyczne | + - * / % | a + b |
Operatorzy relacyjni | == != > < >= <= | a > b |
Operatory logiczne | && & || | ! | a && b |
Operatorzy bitowi | & | ^ ~ << >> >>> | a & b , ~a , a >>> b |
Operatorzy przypisań | = += -= *= /= %= <<= >>= &= ^= | = | a += b |
Operatory Scala mają takie samo znaczenie jak w Javie
Uwaga : metody kończące się na :
bind do prawej (i prawej asocjacji), więc wywołanie z list.::(value)
można zapisać jako value :: list
ze składnią operatora. ( 1 :: 2 :: 3 :: Nil
to to samo co 1 :: (2 :: (3 :: Nil))
)
Przeciążenie operatora
W Scali możesz zdefiniować własnych operatorów:
class Team {
def +(member: Person) = ...
}
Z powyższymi definicjami możesz korzystać w następujący sposób:
ITTeam + Jack
lub
ITTeam.+(Jack)
Aby zdefiniować jednoargumentowe operatory, możesz poprzedzić je unary_
. Np. unary_!
class MyBigInt {
def unary_! = ...
}
var a: MyBigInt = new MyBigInt
var b = !a
Priorytet operatora
Kategoria | Operator | Stowarzyszenie |
---|---|---|
Przyrostek | () [] | Z lewej na prawą |
Unary | ! ~ | Od prawej do lewej |
Mnożny | * / % | Z lewej na prawą |
Przyłączeniowy | + - | Z lewej na prawą |
Zmiana | >> >>> << | Z lewej na prawą |
Relacyjny | > >= < <= | Z lewej na prawą |
Równość | == != | Z lewej na prawą |
Bitowe i | & | Z lewej na prawą |
Bitowe xor | ^ | Z lewej na prawą |
Bitowe lub | | | Z lewej na prawą |
Logiczne i | && | Z lewej na prawą |
Logiczne lub | || | Z lewej na prawą |
Zadanie | = += -= *= /= %= >>= <<= &= ^= | = | Od prawej do lewej |
Przecinek | , | Z lewej na prawą |
Programowanie w Scali daje następujący zarys w oparciu o 1. znak operatora. Np. >
Jest pierwszym znakiem w operatorze >>>
:
Operator |
---|
(wszystkie inne znaki specjalne) |
* / % |
+ - |
: |
= ! |
< > |
& |
^ |
| |
(wszystkie litery) |
(wszyscy operatorzy przypisania) |
Jedyny wyjątek od tej reguły dotyczy operatorów przypisania , np. +=
, *=
Itd. Jeśli operator kończy się znakiem równości (=) i nie jest jednym z operatorów porównania <=
, >=
, ==
lub !=
, wówczas pierwszeństwo operatora jest takie samo jak proste przypisanie. Innymi słowy, niższy niż u jakiegokolwiek innego operatora.