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.