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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow