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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow