- F# 基礎教程
- F# - 首頁
- F# - 概述
- F# - 環境設定
- F# - 程式結構
- F# - 基本語法
- F# - 資料型別
- F# - 變數
- F# - 運算子
- F# - 決策制定
- F# - 迴圈
- F# - 函式
- F# - 字串
- F# - 可選型別
- F# - 元組
- F# - 記錄
- F# - 列表
- F# - 序列
- F# - 集合
- F# - 對映
- F# - 判別聯合
- F# - 可變資料
- F# - 陣列
- F# - 可變列表
- F# - 可變字典
- F# - 基本 I/O
- F# - 泛型
- F# - 委託
- F# - 列舉
- F# - 模式匹配
- F# - 異常處理
- F# - 類
- F# - 結構體
- F# - 運算子過載
- F# - 繼承
- F# - 介面
- F# - 事件
- F# - 模組
- F# - 名稱空間
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> | 左結合 |
廣告