F#-演算子
演算子は、特定の数学的または論理的操作を実行するようにコンパイラーに指示する記号です。F#は組み込み演算子が豊富で、次のタイプの演算子を提供します-
- 算術演算子
- 比較演算子
- ブール演算子
- ビット演算子
算術演算子
次の表は、F#言語でサポートされているすべての算術演算子を示しています。変数Aが10を保持し、変数Bが20を保持すると仮定すると、-
例を表示
オペレーター | 説明 | 例 |
---|---|---|
+ | 2つのオペランドを追加します | A + Bは30を与えます |
- | 最初のオペランドから2番目のオペランドを減算します | A-Bは-10を与えます |
* | 両方のオペランドを乗算します | A * Bは200を与えます |
/ | 分子を分子で割る | B / Aは2を与えます |
% | モジュラス演算子と整数除算後の余り | B%Aは0を与えます |
**** | べき乗演算子、オペランドを別の累乗に累乗します | B ** Aは20与える10 |
比較演算子
次の表は、F#言語でサポートされているすべての比較演算子を示しています。これらのバイナリ比較演算子は、積分型と浮動小数点型で使用できます。これらの演算子は、bool型の値を返します。
変数Aが10を保持し、変数Bが20を保持すると仮定すると、-
例を表示
オペレーター | 説明 | 例 |
---|---|---|
= | 2つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が真になります。 | (A == B)は真ではありません。 |
<> | 2つのオペランドの値が等しいかどうかをチェックし、値が等しくない場合は条件が真になります。 | (A <> B)は真です。 |
>> | 左のオペランドの値が右のオペランドの値より大きいかどうかを確認します。大きい場合は、条件が真になります。 | (A> B)は正しくありません。 |
< | 左のオペランドの値が右のオペランドの値よりも小さいかどうかを確認します。小さい場合は、条件が真になります。 | (A <B)は真です。 |
> = | 左のオペランドの値が右のオペランドの値以上であるかどうかをチェックします。はいの場合、条件は真になります。 | (A> = B)は正しくありません。 |
<= | 左のオペランドの値が右のオペランドの値以下であるかどうかをチェックします。はいの場合、条件は真になります。 | (A <= B)は真です。 |
ブール演算子
次の表は、F#言語でサポートされているすべてのブール演算子を示しています。変数Aが成り立つと仮定しますtrue 変数Bは false, 次に−
例を表示
オペレーター | 説明 | 例 |
---|---|---|
&& | ブールAND演算子と呼ばれます。両方のオペランドがゼロ以外の場合、条件は真になります。 | (A && B)は誤りです。 |
|| | ブールOR演算子と呼ばれます。2つのオペランドのいずれかがゼロ以外の場合、条件は真になります。 | (A || B)は真です。 |
ない | ブールNOT演算子と呼ばれます。オペランドの論理状態を逆にするために使用します。条件がtrueの場合、LogicalNOT演算子はfalseになります。 | not(A && B)は真です。 |
ビット演算子
ビット単位の演算子はビットを処理し、ビットごとの演算を実行します。&&&(ビットごとのAND)の真理値表||| (ビットごとのOR)、および^^^(ビットごとの排他的論理和)は次のとおりです。
例を表示
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 |
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を保持すると仮定すると、-
オペレーター | 説明 | 例 |
---|---|---|
&&& | バイナリAND演算子は、両方のオペランドに存在する場合、結果にビットをコピーします。 | (A &&& B)は12、つまり00001100を与えます |
||| | バイナリOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。 | (A ||| B)は61を返します。これは00111101です。 |
^^^ | バイナリXOR演算子は、ビットが両方ではなく一方のオペランドに設定されている場合、そのビットをコピーします。 | (A ^^^ B)は49を返します。これは00110001です。 |
~~~ | Binary Ones Complement Operatorは単項であり、ビットを「反転」させる効果があります。 | (~~~ A)は-61を返します。これは、2の補数形式の11000011です。 |
<<< | バイナリ左シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ左に移動します。 | <<< 2は、11110000である240を与えます |
>>> | バイナリ右シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動します。 | >>> 2は、00001111である15を与えます |
オペレーターの優先順位
次の表は、F#言語での演算子およびその他の式キーワードの優先順位を、優先順位の低いものから高いものへと示しています。
例を表示
オペレーター | 結合性 |
---|---|
なので | 正しい |
いつ | 正しい |
| (パイプ) | 左 |
; | 正しい |
しましょう | 非結合的 |
機能、楽しみ、一致、試してみてください | 非結合的 |
もし | 非結合的 |
→ | 正しい |
:= | 正しい |
、 | 非結合的 |
または、|| | 左 |
&、&& | 左 |
<op、> op、=、| op、&op | 左 |
&&&、|||、^^^、~~~、<<<、>>> | 左 |
^ op | 正しい |
::: | 正しい |
:?>、:? | 非結合的 |
--op、+ op、(バイナリ) | 左 |
* op、/ op、%op | 左 |
** op | 正しい |
fx(関数適用) | 左 |
| (パターンマッチ) | 正しい |
プレフィックス演算子(+ op、-op、%、%%、&、&& 、! op、〜op) | 左 |
。 | 左 |
f(x) | 左 |
f <タイプ> | 左 |