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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow