F# - 運算子



運算子是一個符號,它告訴編譯器執行特定的數學或邏輯操作。F# 擁有豐富的內建運算子,並提供以下型別的運算子:

  • 算術運算子
  • 比較運算子
  • 布林運算子
  • 位運算子

算術運算子

下表顯示了 F# 語言支援的所有算術運算子。假設變數 A 儲存 10,變數 B 儲存 20,則:

顯示示例

運算子 描述 示例
+ 將兩個運算元相加 A + B 將得到 30
- 從第一個運算元中減去第二個運算元 A - B 將得到 -10
* 將兩個運算元相乘 A * B 將得到 200
/ 將分子除以分母 B / A 將得到 2
% 模運算子,整數除法後的餘數 B % A 將得到 0
** 冪運算子,將一個運算元提升到另一個運算元的冪 B**A 將得到 2010

比較運算子

下表顯示了 F# 語言支援的所有比較運算子。這些二元比較運算子可用於整數和浮點數型別。這些運算子返回 bool 型別的值。

假設變數 A 儲存 10,變數 B 儲存 20,則:

顯示示例

運算子 描述 示例
= 檢查兩個運算元的值是否相等,如果相等則條件為真。 (A == B) 為假。
<> 檢查兩個運算元的值是否不相等,如果不相等則條件為真。 (A <> B) 為真。
> 檢查左運算元的值是否大於右運算元的值,如果大於則條件為真。 (A > B) 為假。
< 檢查左運算元的值是否小於右運算元的值,如果小於則條件為真。 (A < B) 為真。
>= 檢查左運算元的值是否大於或等於右運算元的值,如果大於或等於則條件為真。 (A >= B) 為假。
<= 檢查左運算元的值是否小於或等於右運算元的值,如果小於或等於則條件為真。 (A <= B) 為真。

布林運算子

下表顯示了 F# 語言支援的所有布林運算子。假設變數 A 儲存 true,變數 B 儲存 false,則:

顯示示例

運算子 描述 示例
&& 稱為布林 AND 運算子。如果兩個運算元均非零,則條件為真。 (A && B) 為假。
|| 稱為布林 OR 運算子。如果兩個運算元中任何一個非零,則條件為真。 (A || B) 為真。
稱為布林 NOT 運算子。用於反轉其運算元的邏輯狀態。如果條件為真,則邏輯 NOT 運算子將使其變為假。 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,即 0000 1100
||| 二進位制 OR 運算子將位複製到結果中,如果它存在於任何一個運算元中。 (A ||| B) 將得到 61,即 0011 1101
^^^ 二進位制 XOR 運算子將位複製到結果中,如果它在一個運算元中設定,但在另一個運算元中沒有設定。 (A ^^^ B) 將得到 49,即 0011 0001
~~~ 二進位制一補碼運算子是一元的,其作用是“翻轉”位。 (~~~A) 將得到 -61,在二進位制補碼形式中為 1100 0011。
<<< 二進位制左移運算子。左運算元的值向左移動由右運算元指定的位數。 A <<< 2 將得到 240,即 1111 0000
>>> 二進位制右移運算子。左運算元的值向右移動由右運算元指定的位數。 A >>> 2 將得到 15,即 0000 1111

運算子優先順序

下表顯示了 F# 語言中運算子和其他表示式關鍵字的優先順序順序,從最低優先順序到最高優先順序。

顯示示例

運算子 結合性
as 右結合
when 右結合
| (管道) 左結合
; 右結合
let 非結合
function, fun, match, try 非結合
if 非結合
右結合
:= 右結合
, 非結合
or, || 左結合
&, && 左結合
< op, >op, =, |op, &op 左結合
&&& , |||, ^^^, ~~~, <<<, >>> 左結合
^ op 右結合
:: 右結合
:?>, :? 非結合
- op, +op, (二元) 左結合
* op, /op, %op 左結合
** op 右結合
f x (函式應用) 左結合
| (模式匹配) 右結合
字首運算子 (+op, -op, %, %%, &, &&, !op, ~op) 左結合
. 左結合
f(x) 左結合
f<types> 左結合
廣告
© . All rights reserved.