Scala-operators

提供:Dev Guides
移動先:案内検索

Scala-オペレーター

演算子は、特定の数学的または論理的な操作を実行するようコンパイラーに指示する記号です。 Scalaは組み込みの演算子が豊富であり、次の種類の演算子を提供します-

  • 算術演算子
  • 関係演算子
  • 論理演算子
  • ビット演算子
  • 割り当て演算子

この章では、算術、関係、論理、ビット単位、割り当て、およびその他の演算子を1つずつ調べます。

算術演算子

次の算術演算子は、Scala言語でサポートされています。 たとえば、変数Aが10を保持し、変数Bが20を保持すると仮定します-

リンク:/scala/scala_arithmatic_operators [例を表示]

Operator Description Example
PLUS Adds two operands A PLUS B will give 30
- Subtracts second operand from the first A - B will give -10
* Multiplies both operands A* B will give 200
/ Divides numerator by de-numerator B/A will give 2
% Modulus operator finds the remainder after division of one number by another B % A will give 0

関係演算子

次の関係演算子はScala言語でサポートされています。 たとえば、変数Aが10を保持し、変数Bが20を保持すると仮定します-

link:/scala/scala_relational_operators [例を表示]

Operator Description Example
== Checks if the values of two operands are equal or not, if yes then condition becomes true. (A == B) is not true.
!= Checks if the values of two operands are equal or not, if values are not equal then condition becomes true. (A != B) is true.
> Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. (A > B) is not true.
< Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. (A < B) is true.
>= Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. (A >= B) is not true.
Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. (A ⇐ B) is true.

論理演算子

次の論理演算子はScala言語でサポートされています。 たとえば、変数Aが1を保持し、変数Bが0を保持すると仮定します-

リンク:/scala/scala_logical_operators [例を表示]

Operator Description Example
&& It is called Logical AND operator. If both the operands are non zero then condition becomes true. (A && B) is false.
It is called Logical OR Operator. If any of the two operands is non zero then condition becomes true. (A
B) is true. ! It is called Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false.

ビット演算子

ビットごとの演算子はビットに対して機能し、ビットごとの演算を実行します。 &、|、および^の真理値表は次のとおりです-

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

A = 60であると仮定します。およびB = 13;今バイナリ形式では、次のようになります-

A = 0011 1100
B = 0000 1101
-----------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011

Scala言語でサポートされているビット単位の演算子を次の表にリストします。 変数Aが60を保持し、変数Bが13を保持すると仮定します-

リンク:/scala/scala_bitwise_operators [例を表示]

Operator Description Example
& Binary AND Operator copies a bit to the result if it exists in both operands. (A & B) will give 12, which is 0000 1100
Binary OR Operator copies a bit if it exists in either operand.
(A B) will give 61, which is 0011 1101 ^
Binary XOR Operator copies the bit if it is set in one operand but not both. (A ^ B) will give 49, which is 0011 0001 ~
Binary Ones Complement Operator is unary and has the effect of 'flipping' bits. (~A ) will give -61, which is 1100 0011 in 2’s complement form due to a signed binary number. <<
Binary Left Shift Operator. The bit positions of the left operands value is moved left by the number of bits specified by the right operand. A << 2 will give 240, which is 1111 0000 >>
Binary Right Shift Operator. The Bit positions of the left operand value is moved right by the number of bits specified by the right operand. A >> 2 will give 15, which is 1111 >>>

割り当て演算子

Scala言語でサポートされている次の代入演算子があります-

リンク:/scala/scala_assignment_operators [例を表示]

Operator Description Example
= Simple assignment operator, Assigns values from right side operands to left side operand C = A PLUS B will assign value of A PLUS B into C
PLUS= Add AND assignment operator, It adds right operand to the left operand and assign the result to left operand C PLUS= A is equivalent to C = C PLUS A
-= Subtract AND assignment operator, It subtracts right operand from the left operand and assign the result to left operand C -= A is equivalent to C = C - A
*= Multiply AND assignment operator, It multiplies right operand with the left operand and assign the result to left operand C *= A is equivalent to C = C *A
/= Divide AND assignment operator, It divides left operand with the right operand and assign the result to left operand C/= A is equivalent to C = C/A
%= Modulus AND assignment operator, It takes modulus using two operands and assign the result to left operand C %= A is equivalent to C = C % A
<⇐ Left shift AND assignment operator C <⇐ 2 is same as C = C << 2
>>= Right shift AND assignment operator C >>= 2 is same as C = C >> 2
&= Bitwise AND assignment operator C &= 2 is same as C = C & 2
^= bitwise exclusive OR and assignment operator C ^= 2 is same as C = C ^ 2
= bitwise inclusive OR and assignment operator
C = 2 is same as C = C 2

Scalaでの演算子の優先順位

演算子の優先順位は、式内の用語のグループ化を決定します。 これは、式の評価方法に影響します。 特定の演算子は、他の演算子よりも優先順位が高くなっています。たとえば、乗算演算子は加算演算子よりも優先順位が高い-

たとえば、x = 7 + 3* 2;ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2で乗算され、7に加算されます。

次の表をご覧ください。 優先順位が最も高い演算子が表の上部に表示され、優先順位が最も低い演算子が下部に表示されます。 式内では、優先順位の高い演算子が最初に評価されます。

Category Operator Associativity
Postfix () [] Left to right
Unary ! ~ Right to left
Multiplicative */% Left to right
Additive + - Left to right
Shift >> >>> << Left to right
Relational > >= < ⇐ Left to right
Equality == != Left to right
Bitwise AND & Left to right
Bitwise XOR ^ Left to right
Bitwise OR
Left to right Logical AND &&
Left to right Logical OR
Left to right
Assignment = += -=* =/= %= >>= <⇐ &= ^= =
Right to left Comma ,