Scala Language
Opérateurs à Scala
Recherche…
Opérateurs intégrés
Scala a les opérateurs intégrés suivants (méthodes / éléments de langage avec des règles de priorité prédéfinies):
Type | symbole | Exemple |
---|---|---|
Opérateurs arithmétiques | + - * / % | a + b |
Opérateurs relationnels | == != > < >= <= | a > b |
Opérateurs logiques | && & || | ! | a && b |
Opérateurs sur les bits | & | ^ ~ << >> >>> | a & b , ~a , a >>> b |
Opérateurs d'affectation | = += -= *= /= %= <<= >>= &= ^= | = | a += b |
Les opérateurs Scala ont la même signification qu'en Java
Remarque : les méthodes qui se terminent par :
lier à droite (et à droite associative), l'appel avec value :: list
list.::(value)
peut être écrit en tant que value :: list
avec la syntaxe de l'opérateur. ( 1 :: 2 :: 3 :: Nil
est identique à 1 :: (2 :: (3 :: Nil))
)
Surcharge de l'opérateur
En Scala, vous pouvez définir vos propres opérateurs:
class Team {
def +(member: Person) = ...
}
Avec les définitions ci-dessus, vous pouvez l'utiliser comme:
ITTeam + Jack
ou
ITTeam.+(Jack)
Pour définir des opérateurs unaires, vous pouvez le préfixer avec unary_
. Par exemple unary_!
class MyBigInt {
def unary_! = ...
}
var a: MyBigInt = new MyBigInt
var b = !a
Priorité de l'opérateur
Catégorie | Opérateur | Associativité |
---|---|---|
Postfix | () [] | De gauche à droite |
Unary | ! ~ | De droite à gauche |
Multiplicatif | * / % | De gauche à droite |
Additif | + - | De gauche à droite |
Décalage | >> >>> << | De gauche à droite |
Relationnel | > >= < <= | De gauche à droite |
Égalité | == != | De gauche à droite |
Bitwise et | & | De gauche à droite |
Xor binaire | ^ | De gauche à droite |
Bitwise ou | | | De gauche à droite |
Logique et | && | De gauche à droite |
Logique ou | || | De gauche à droite |
Affectation | = += -= *= /= %= >>= <<= &= ^= | = | De droite à gauche |
Virgule | , | De gauche à droite |
La programmation en Scala donne le contour suivant basé sur le 1er caractère de l'opérateur. Par exemple >
est le 1er caractère de l'opérateur >>>
:
Opérateur |
---|
(tous les autres caractères spéciaux) |
* / % |
+ - |
: |
= ! |
< > |
& |
^ |
| |
(toutes les lettres) |
(tous les opérateurs d'affectation) |
La seule exception à cette règle concerne les opérateurs d'affectation , par exemple +=
, *=
, etc. Si un opérateur se termine par un caractère égal (=) et n'est pas l'un des opérateurs de comparaison <=
, >=
, ==
ou !=
, alors la priorité de l'opérateur est la même que la simple affectation. En d'autres termes, inférieure à celle de tout autre opérateur.