Scala Language
Operatörer i Scala
Sök…
Inbyggda operatörer
Scala har följande inbyggda operatörer (metoder / språkelement med fördefinierade företrädesregler):
| Typ | Symbol | Exempel |
|---|---|---|
| Aritmetiska operatörer | + - * / % | a + b |
| Relationsoperatörer | == != > < >= <= | a > b |
| Logiska operatörer | && & || | ! | a && b |
| Bitvisa operatörer | & | ^ ~ << >> >>> | a & b , ~a , a >>> b |
| Uppdragsoperatörer | = += -= *= /= %= <<= >>= &= ^= | = | a += b |
Scala-operatörer har samma betydelse som i Java
Obs : metoder som slutar med : binda till höger (och höger associativ), så att samtalet med list.::(value) kan skrivas som value :: list med operatursyntax. ( 1 :: 2 :: 3 :: Nil är samma som 1 :: (2 :: (3 :: Nil)) )
Operatörens överbelastning
I Scala kan du definiera dina egna operatörer:
class Team {
def +(member: Person) = ...
}
Med ovanstående definitioner kan du använda det som:
ITTeam + Jack
eller
ITTeam.+(Jack)
För att definiera unära operatörer kan du prefixa det med unary_ . Till exempel unary_!
class MyBigInt {
def unary_! = ...
}
var a: MyBigInt = new MyBigInt
var b = !a
Operatörens företräde
| Kategori | Operatör | associativitet |
|---|---|---|
| postfix | () [] | Vänster till höger |
| unär | ! ~ | Höger till vänster |
| multiplikativ | * / % | Vänster till höger |
| Tillsats | + - | Vänster till höger |
| Flytta | >> >>> << | Vänster till höger |
| relations~~POS=TRUNC | > >= < <= | Vänster till höger |
| Jämlikhet | == != | Vänster till höger |
| Bitvis och | & | Vänster till höger |
| Bitvis xor | ^ | Vänster till höger |
| Bitvis eller | | | Vänster till höger |
| Logiskt och | && | Vänster till höger |
| Logiskt eller | || | Vänster till höger |
| Uppdrag | = += -= *= /= %= >>= <<= &= ^= | = | Höger till vänster |
| Kommatecken | , | Vänster till höger |
Programmering i Scala ger följande disposition baserat på den första karaktären i operatören. Ex. > Är den första karaktären i operatören >>> :
| Operatör |
|---|
| (alla andra specialtecken) |
* / % |
+ - |
: |
= ! |
< > |
& |
^ |
| |
| (alla bokstäver) |
| (alla uppdragsoperatörer) |
Det enda undantaget till denna regel gäller tilldelningsoperatorer, t ex += , *= , etc. Om en operatör ändarna med en lika tecken (=) och är inte en av de jämförelseoperatorer <= , >= , == eller != , då är operatörens företräde samma som enkel tilldelning. Med andra ord lägre än för någon annan operatör.