Latest web development tutorials

operador Scala

Um operador é um símbolo, usado para dizer ao compilador para executar um Determinado operações matemáticas e lógicas.

Scala ricos embutidos operadores, incluindo os seguintes tipos:

  • operadores aritméticos

  • Operadores relacionais

  • Operadores lógicos

  • Operadores bit a bit

  • Operadores de atribuição

Em seguida, vamos explicar-lhe mais do que a aplicação de vários operadores.


operadores aritméticos

A tabela a seguir lista os operadores de suporte aritméticas Scala.

Uma variável assumida como 10, B 20:

operadores descrição Exemplos
+ mais Um resultado da operação + B é de 30
- menos A - o resultado da operação B é de -10
* sinal de multiplicação Um resultado da operação * B é de 200
/ Sinal de divisão B / A resultado da operação é de 2
% restante B% o resultado do cálculo é 0

Exemplos

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) );
      
   }
}

Correndo instância »

Implementação do código acima, a saída é:

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

Operadores relacionais

A tabela a seguir lista o Scala apoiar os operadores relacionais.

Uma variável assumida como 10, B 20:

operadores descrição Exemplos
== igual (A == B) o resultado da operação é falso
! = não é igual (A! = B) o resultado da operação é verdade
> maior do que (A> B) o resultado da operação é falso
< menos que (A <B) o resultado da operação é verdade
> = Maior do que ou igual (A> = B) o resultado da operação é falso
<= Menor ou igual (A <= B) o resultado da operação é verdade

Exemplos

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) );
   }
}

Implementação do código acima, a saída é:

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

Operadores lógicos

A tabela a seguir lista o Scala suporta operadores lógicos.

Uma variável assumida como 1, B é 0:

operadores descrição Exemplos
&& lógica e (A && B) o resultado da operação é falso
|| lógico ou (A || B) o resultado da operação é verdade
! NÃO lógico ! (A && B) o resultado da operação é verdade

Exemplos

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) );
   }
} 

Implementação do código acima, a saída é:

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

Operadores bit a bit

Operadores bit a bit bits usados ​​para operar, ~, &, |, ^ foram negados, eo bit, ou por pouco e, bit a bit operação XOR com os seguintes exemplos de mesa:

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; duas variáveis ​​correspondente ao binário é:

A = 0011 1100

B = 0000 1101

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

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

A regra Scala bit a bit como segue:

operadores descrição Exemplos
& Bit a bit operador AND (A & b) saída de 12, explicação binária: 0000 1100
| OR bit a bit operador (A | b) a saída 61, explicação binária: 00111101
^ Bit a bit OU exclusivo do operador (A ^ b) a saída de 49, explicação binária: 00110001
~ Operadores bit a bit (~ A) -61 de saída, explicação binária: 1100 0011 em uma forma simbólica complementar número binário.
<< operador móvel esquerda um << 2 saídas de 240 interpretação binário: 11110000
>> Os operadores móveis para a direita um >> 2 de saída 15, explicação binária: 0000 1111
>>> deslocamento para a direita sem sinal A >>> 2 saídas de 15 explicação binária: 0000 1111

Exemplos

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 );
   }
} 

Implementação do código acima, a saída é:

$ 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

Operadores de atribuição

As listas a seguir o operador Scala linguagem atribuição de apoio:

operadores descrição Exemplos
= Simples operador de atribuição, especifica o operando direito atribuído ao operando esquerdo. C resultado = A + B + A operação B é atribuído a C
+ = Adicionando após a atribuição, os lados esquerdo e direito do operando antes de adicionar atribuído ao operando esquerdo. C + = A corresponde a C = C + A
- = Depois de atribuição de subtração, os operandos esquerdo e direito de ambos os lados do operando esquerdo após subtracção atribuído. C - = A corresponde a C = C - A
* = Em seguida, multiplicando-se a atribuição, os lados esquerdo e direito dos operandos são multiplicados antes atribuição para o operando esquerdo. C * = A corresponde a C = C * A
/ = Dividido após a atribuição, os lados esquerdo e direito do operando divisória após atribuição para o operando esquerdo. C / = A é equivalente C = C / A
% = Remanescente após a atribuição, os lados esquerdo e direito do operando resto depois de atribuição para o operando esquerdo. C% = A é equivalente a C = C% A
<< = Bit a bit à esquerda após a atribuição C << = 2 corresponde a C = C << 2
>> = Bit a bit logo após a atribuição C >> = 2 é equivalente a C = C >> 2
& = Bit a bit e atribuição após operação C & = 2 é equivalente a C = C & 2
= ^ Bit a bit OU exclusivo do operador e, em seguida, atribuído C ^ = 2 é equivalente a C = C ^ 2
| = OR bit a bit atribuição após C | = 2 corresponde a C = C | 2

Exemplos

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 );
   }
} 

Implementação do código acima, a saída é:

$ 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

Precedência de operador

Em uma expressão pode conter uma pluralidade de diferentes operadores de ligação com diferentes tipos de dados de objectos de dados, uma vez que a expressão tem uma variedade de operações, uma ordem diferente de operações podem ter diferentes resultados, mesmo errada erro de operação, porque quando quando uma expressão contendo uma variedade de operações, de acordo com uma certa ordem devem ser combinadas de modo a assegurar a racionalidade e exactidão dos resultados, a singularidade da operação.

Prioridade por ordem decrescente de cima para baixo, a parte superior tem a maior prioridade, o operador vírgula tem a prioridade mais baixa.

O mesmo nível de prioridade, de acordo com a ordem de ligação de cálculo. A maioria das operações são calculados a partir da esquerda para a direita, apenas três prioridades são da direita para a esquerda combinação, eles são operadores unários, operadores condicionais, operadores de atribuição.

As prioridades básicas precisa se lembrar:

  • ponteiro ideal, unário de operadores binários. Como o sinal.
  • Primeiro multiplicação e divisão (módulo) após subtracção.
  • Primeira operação de deslocamento aritmético após a última computação pouco. Por favor, preste especial atenção: << 1 2 & 3 + 7 é equivalente a (1 << (3 + 2)) e 7
  • operação final lógica de cálculo
Tipo de operador operadores direcção de encadernação
avaliação de expressão () []. Expr ++ expr-- Esquerda para a direita
operador unário

* & + - ~ ++ Expr --expr

* /%

+ -

>> <<

<> <=> =

==! =

Direita para a esquerda
Operadores bit a bit

&

^

|

&&

||

Esquerda para a direita
operador ternário ?: Direita para a esquerda
Operadores de atribuição = + = - = * = / =% = >> = << = & = ^ = | = Direita para a esquerda
vírgula , Esquerda para a direita