Scala Language
Operadores en Scala
Buscar..
Operadores incorporados
Scala tiene los siguientes operadores integrados (métodos / elementos de lenguaje con reglas de precedencia predefinidas):
Tipo | Símbolo | Ejemplo |
---|---|---|
Operadores aritméticos | + - * / % | a + b |
Operadores relacionales | == != > < >= <= | a > b |
Operadores logicos | && & || | ! | a && b |
Operadores de bits | & | ^ ~ << >> >>> | a & b , ~a , a >>> b |
Operadores de Asignación | = += -= *= /= %= <<= >>= &= ^= | = | a += b |
Los operadores de Scala tienen el mismo significado que en Java.
Nota : los métodos que terminan con :
enlazar a la derecha (y asociativa a la derecha), por lo que la llamada con list.::(value)
se puede escribir como value :: list
con la sintaxis del operador. ( 1 :: 2 :: 3 :: Nil
es lo mismo que 1 :: (2 :: (3 :: Nil))
)
Sobrecarga del operador
En Scala puedes definir tus propios operadores:
class Team {
def +(member: Person) = ...
}
Con lo definido arriba puedes usarlo como:
ITTeam + Jack
o
ITTeam.+(Jack)
Para definir operadores unarios puedes prefijarlo con unary_
. Por ejemplo, unary_!
class MyBigInt {
def unary_! = ...
}
var a: MyBigInt = new MyBigInt
var b = !a
Precedencia del operador
Categoría | Operador | Asociatividad |
---|---|---|
Sufijo | () [] | De izquierda a derecha |
Unario | ! ~ | De derecha a izquierda |
Multiplicativa | * / % | De izquierda a derecha |
Aditivo | + - | De izquierda a derecha |
Cambio | >> >>> << | De izquierda a derecha |
Relacional | > >= < <= | De izquierda a derecha |
Igualdad | == != | De izquierda a derecha |
A nivel de bit y | & | De izquierda a derecha |
Xor bitwise | ^ | De izquierda a derecha |
Bitwise o | | | De izquierda a derecha |
Lógico y | && | De izquierda a derecha |
Lógico o | || | De izquierda a derecha |
Asignación | = += -= *= /= %= >>= <<= &= ^= | = | De derecha a izquierda |
Coma | , | De izquierda a derecha |
La programación en Scala ofrece el siguiente esquema basado en el primer carácter del operador. Por ejemplo, >
es el 1er carácter en el operador >>>
:
Operador |
---|
(todos los demás caracteres especiales) |
* / % |
+ - |
: |
= ! |
< > |
& |
^ |
| |
(todas las letras) |
(todos los operadores de asignación) |
La única excepción a esta regla se refiere a los operadores de asignación , por ejemplo, +=
, *=
, etc. Si un operador termina con un carácter igual (=) y no es uno de los operadores de comparación <=
, >=
, ==
o !=
, entonces la prioridad del operador es la misma que la asignación simple. En otras palabras, más bajo que el de cualquier otro operador.