Latest web development tutorials

operatore Scala

Un operatore è un simbolo, usato per dire al compilatore di eseguire un determinato operazioni matematiche e logiche.

Scala ricchi operatori built-in, tra cui i seguenti tipi:

  • Gli operatori aritmetici

  • Operatori relazionali

  • Operatori logici

  • operatori bit per bit

  • Operatori di assegnazione

In seguito, spiegheremo a voi più che l'applicazione dei vari operatori.


Gli operatori aritmetici

Nella tabella seguente sono elencati gli operatori aritmetici supporto Scala.

Una variabile assunto come 10, B 20:

operatori descrizione Esempi
+ più Un risultato dell'operazione + B è di 30
- meno A - B risultato dell'operazione è -10
* segno di moltiplicazione A * risultato dell'operazione è di 200 B
/ Segno di divisione B / A risultato dell'operazione è 2
% resto B% un risultato di calcolo è 0

Esempi

object Test {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;
      var c = 25;
      var d = 25;
      println("a + b = " + (a + b) );
      println("a - b = " + (a - b) );
      println("a * b = " + (a * b) );
      println("b / a = " + (b / a) );
      println("b % a = " + (b % a) );
      println("c % a = " + (c % a) );
      
   }
}

esempio »Esecuzione

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5

Operatori relazionali

La seguente tabella elenca Scala supporta operatori relazionali.

Una variabile assunto come 10, B 20:

operatori descrizione Esempi
== pari (A == B) risultato dell'operazione è falso
! = Non è uguale (A! = B) risultato dell'operazione è vero
> maggiore di (A> B) risultato dell'operazione è falso
< meno (A <B) risultato dell'operazione è vero
> = Maggiore o uguale (A> = B) il risultato dell'operazione è falsa
<= Minore o uguale (A <= B) risultato dell'operazione è vero

Esempi

object Test {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;
      println("a == b = " + (a == b) );
      println("a != b = " + (a != b) );
      println("a > b = " + (a > b) );
      println("a < b = " + (a < b) );
      println("b >= a = " + (b >= a) );
      println("b <= a = " + (b <= a) );
   }
}

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

Operatori logici

Nella tabella seguente sono elencati i Scala supporta gli operatori logici.

Una variabile assunta come 1, B è 0:

operatori descrizione Esempi
&& Logica e (A && B) risultato dell'operazione è falso
|| logico o (A || B) risultato dell'operazione è vero
! NOT logico ! (A && B) risultato dell'operazione è vero

Esempi

object Test {
   def main(args: Array[String]) {
      var a = true;
      var b = false;

      println("a && b = " + (a&&b) );

      println("a || b = " + (a||b) );

      println("!(a && b) = " + !(a && b) );
   }
} 

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
a && b = false
a || b = true
!(a && b) = true

operatori bit per bit

Bit per bit Operatori bit utilizzati per operare, ~, &, |, ^ sono stati negato, e il bit, o con bit e, operazione di XOR bit a bit con i seguenti esempi tabella:

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

Se A = 60 e B = 13; due variabili corrispondente binario è:

A = 0011 1100

B = 0000 1101

-------位运算----------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

La regola Scala bit a bit come segue:

operatori descrizione Esempi
& Bitwise operatore AND (A & B) Uscita 12, spiegazione binario: 0000 1100
| Operatore OR (A | B) Uscita 61, spiegazione binario: 00.111.101
^ OR di bit esclusivo dell'operatore (A ^ b) l'uscita di 49, spiegazione binario: 00.110.001
~ operatori bit per bit (~ A) -61 uscita, spiegazione binaria: 1100 0011 in forma simbolica complementare numero binario.
<< operatore di telefonia mobile di sinistra un << 2 uscite 240 interpretazione binaria: 11110000
>> Operatori Mobili destra un >> 2 uscita 15, spiegazione binario: 0000 1111
>>> Unsigned spostamento a destra A >>> 2 uscite 15 Spiegazione binario: 0000 1111

Esempi

object Test {
   def main(args: Array[String]) {
      var a = 60;           /* 60 = 0011 1100 */  
      var b = 13;           /* 13 = 0000 1101 */
      var c = 0;

      c = a & b;            /* 12 = 0000 1100 */ 
      println("a & b = " + c );

      c = a | b;            /* 61 = 0011 1101 */
      println("a | b = " + c );

      c = a ^ b;            /* 49 = 0011 0001 */
      println("a ^ b = " + c );

      c = ~a;               /* -61 = 1100 0011 */
      println("~a = " + c );

      c = a << 2;           /* 240 = 1111 0000 */
      println("a << 2 = " + c );

      c = a >> 2;           /* 215 = 1111 */
      println("a >> 2  = " + c );

      c = a >>> 2;          /* 215 = 0000 1111 */
      println("a >>> 2 = " + c );
   }
} 

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2  = 15
a >>> 2 = 15

Operatori di assegnazione

Di seguito sono elencati l'operatore Scala lingua assegnazione supporto:

operatori descrizione Esempi
= operatore di assegnazione Semplice, specifica l'operando di destra assegnato al operando a sinistra. C risultato = A + B + A operazione B è assegnato a C
+ = L'aggiunta dopo l'assegnazione, i lati sinistro e destro del operando prima di aggiungere assegnati al operando a sinistra. C + = A corrisponde a C = C + A
- = Dopo assegnazione sottrazione, gli operandi sinistro e destro su entrambi i lati l'operando a sinistra dopo la sottrazione assegnati. C - = A corrisponde a C = C - A
* = Poi moltiplicando l'assegnazione, i lati sinistro e destro degli operandi si moltiplicano prima assegnazione al operando a sinistra. C * = A corrisponde a C = C * A
/ = Diviso dopo l'assegnazione, i lati sinistro e destro del operando divisione dopo l'assegnazione alla operando a sinistra. C / = A è equivalente C = C / A
% = Resto dopo l'assegnazione, i lati sinistro e destro del operando rimanente dopo l'assegnazione alla operando a sinistra. C% = A è equivalente a C = C% A
<< = Sinistra bit a bit dopo l'assegnazione C << = 2 corrisponde a C = C << 2
>> = Bit a bit a destra dopo la cessione C >> = 2 è equivalente a C = C >> 2
& = AND bit a bit incarico dopo l'operazione C & = 2 è equivalente C = C & 2
^ = OR di bit esclusivo dell'operatore e poi assegnato C ^ = 2 è equivalente a C = C ^ 2
| = OR bit a bit assegnazione dopo C | = 2 corrisponde a C = C | 2

Esempi

object Test {
   def main(args: Array[String]) {
      var a = 10;	
      var b = 20;
      var c = 0;

      c = a + b;
      println("c = a + b  = " + c );

      c += a ;
      println("c += a  = " + c );

      c -= a ;
      println("c -= a = " + c );

      c *= a ;
      println("c *= a = " + c );

      a = 10;
      c = 15;
      c /= a ;
      println("c /= a  = " + c );

      a = 10;
      c = 15;
      c %= a ;
      println("c %= a  = " + c );

      c <<= 2 ;
      println("c <<= 2  = " + c );

      c >>= 2 ;
      println("c >>= 2  = " + c );

      c >>= 2 ;
      println("c >>= a  = " + c );

      c &= a ;
      println("c &= 2  = " + c );
     
      c ^= a ;
      println("c ^= a  = " + c );

      c |= a ;
      println("c |= a  = " + c );
   }
} 

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
c = a + b  = 30
c += a  = 40
c -= a = 30
c *= a = 300
c /= a  = 1
c %= a  = 5
c <<= 2  = 20
c >>= 2  = 5
c >>= a  = 1
c &= 2  = 0
c ^= a  = 10
c |= a  = 10

precedenza Operatore

In una espressione può contenere una pluralità di differenti operatori di collegamento con diversi tipi di dati degli oggetti dati, dal momento che l'espressione ha una varietà di operazioni, un diverso ordine di operazioni può avere risultati diversi, anche errore di funzionamento errato, perché quando quando un'espressione contenente una serie di operazioni, secondo un certo ordine deve essere combinata in modo da garantire la razionalità e correttezza dei risultati, l'unicità di funzionamento.

La priorità in ordine decrescente dall'alto verso il basso, la parte superiore ha la priorità più alta, l'operatore virgola ha la priorità più bassa.

Lo stesso livello di priorità, secondo l'ordine di binding di calcolo. La maggior parte delle operazioni sono calcolate da sinistra a destra, solo tre priorità sono da destra a sinistra combinazione, sono operatori unari, operatori condizionali, operatori di assegnazione.

Le priorità di base devono ricordare:

  • puntatore ottimale, unario di operatori binari. Come il segno.
  • Prima moltiplicazione e divisione (modulo) dopo la sottrazione.
  • Prima operazione shift aritmetico dopo l'ultimo bit. Si prega di prestare particolare attenzione a: << 1 2 & 3 + 7 è pari a (1 << (3 + 2)) e 7
  • operazione logica calcolo finale
Tipo Operatore operatori direzione di rilegatura
valutazione delle espressioni () []. Espr ++ expr-- Da sinistra a destra
operatore unario

* & + -! ~ ++ Espr --expr

* /%

+ -

>> <<

<> <=> =

==! =

Da destra a sinistra
operatori bit per bit

&

^

|

&&

||

Da sinistra a destra
operatore ternario ?: Da destra a sinistra
Operatori di assegnazione = + = - = * = / =% = >> = << = & = ^ = | = Da destra a sinistra
virgola , Da sinistra a destra