Fsharp-operators

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

F#-演算子

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

  • 算術演算子
  • 比較演算子
  • ブール演算子
  • ビット演算子

算術演算子

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

リンク:/fsharp/fsharp_arithmetic_operators [例を表示]

Operator Description Example
+ Adds two operands A + 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 and remainder of after an integer division B % A will give 0
** Exponentiation Operator, raises an operand to the power of another B**A will give 2010

比較演算子

次の表は、F#言語でサポートされているすべての比較演算子を示しています。 これらのバイナリ比較演算子は、整数型および浮動小数点型で使用できます。 これらの演算子は、bool型の値を返します。

変数Aが10を保持し、変数Bが20を保持すると仮定します-

リンク:/fsharp/fsharp_comparison_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.

ブール演算子

次の表は、F#言語でサポートされているすべてのブール演算子を示しています。 変数Aが true を保持し、変数Bが false を保持すると仮定します-

リンク:/fsharp/fsharp_boolean_operators [例を表示]

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

ビット演算子

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

リンク:/fsharp/fsharp_bitwise_operators [例を表示]

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

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

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

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.
<<< Binary Left Shift Operator. 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 left operands value is moved right by the number of bits specified by the right operand. A >>> 2 will give 15 which is 0000 1111

演算子の優先順位

次の表に、F#言語の演算子およびその他の式キーワードの優先順位を、優先順位の低いものから高いものへと示します。

リンク:/fsharp/fsharp_operators_precedence [例を表示]

Operator Associativity
as Right
when Right
(pipe)
Left ;
Right let
Non associative function, fun, match, try
Non associative if
Non associative
Right :=
Right ,
Non associative or,
Left &, &&
Left < op, >op, =,
op, &op Left
&&& ,
, ^, ~, <<<, >>>
Left ^ op
Right ::
Right :?>, :?
Non associative - op, +op, (binary)
Left * op,/op, %op
Left ** op
Right f x (function application)
Left
(pattern match) Right
prefix operators (PLUSop, -op, %, %%, &, &&, !op, ~op) Left
. Left
f(x) Left
f<types> Left