共用方式為


符號和運算子參考

本文包含描述 F# 中使用的符號和運算子的數據表,並提供每個符號的簡短描述。 某些符號和運算符在多個角色中使用時有兩個以上的專案。

批注、編譯程式指示詞和屬性符號

下表描述與批注、編譯程式指示詞和屬性相關的符號。

符號或運算符號 連結 說明
(*...*) 分隔可跨越多行的批注。
// 表示單行批注的開頭。
/// XML 檔 表示 XML 批注。
# 編譯程式指示詞 前置詞預處理器或編譯程式指示詞。
[<...>] 屬性 分隔屬性。

字串和識別碼號

下表描述與字串相關的符號。

符號或運算符號 連結 說明
" 字串 分隔文字字串。
@" 字串 啟動逐字文字字串,其中可能包含反斜杠和其他字元。
""" 字串 分隔三引號文字字串,其中可能包含反斜杠、雙引號和其他字元。
$" 插入字串 啟動插入字串。
' 字面值 分隔單一字元常值。
``...`` 分隔標識符,否則不會是法律標識符,例如語言關鍵詞。
\ 字串 逸出下一個字元;用於字元和字串常值。

算術運算子

下表描述算術運算元。

符號或運算符號 連結 說明
+ 算術運算子
  • 當做二元運算符使用時,新增左右兩側。
  • 當做一元運算符使用時,表示正數。 (正式來說,它會產生相同的值,且符號不變。
- 算術運算子
  • 當做二元運算符使用時,會從左側減去右邊。
  • 當做一元運算符使用時,執行否定運算。
* 算術運算子

Tuple

量值單位
  • 當做二元運算符使用時,會將左右兩側相乘。
  • 在類型中,表示 Tuple 中的配對。
  • 用於量值類型的單位。
/ 算術運算子

量值單位
  • 將左邊(分子)除以右邊(分母)。
  • 用於量值類型的單位。
% 算術運算子 計算整數餘數。
** 算術運算子 計算指數運算(x ** y表示x的乘冪)。y

比較運算子

下表描述比較運算符。

符號或運算符號 連結 說明
< 算術運算子 計算小於作業。
<> 算術運算子 如果左邊不等於右邊,則傳 true 回 ;否則傳回 false。
<= 算術運算子 如果左邊小於或等於右邊,則傳 true 回 ,否則傳 false回 。
= 算術運算子 如果左邊等於右邊,則傳 true 回 ,否則傳 false回 。
> 算術運算子 如果左邊大於右邊,則傳 true 回 ,否則傳 false回 。
>= 算術運算子 如果左邊大於或等於右邊,則傳 true 回 ,否則傳 false回 。

布林運算子

下表描述算術和布爾運算符符號。

符號或運算符號 連結 說明
&& 布爾運算符 計算布爾 AND 運算。
|| 布爾運算符 計算布爾 OR 運算。

位元運算子

下表描述位運算元。

符號或運算符號 連結 說明
&&& 位運算子 計算位 AND 運算。
<<< 位運算子 將左邊數量中的位移位到左邊,由右邊指定的位數移位。
>>> 位運算子 將左邊數量中的位移位到右邊,依右邊指定的位置數目移位。
^^^ 位運算子 計算位獨佔 OR 作業。
||| 位運算子 計算位 OR 運算。
~~~ 位運算子 計算位 NOT 運算。

函式符號和運算符號

下表描述與函式相關的運算符和符號。

符號或運算符號 連結 說明
-> 函數 在函式運算式中,將輸入模式與輸出運算式分開。
|> 函數 將左側的結果傳遞至右側的函式(正向管道運算符)。
||> ( ||> )<'T1,'T2,'U> 函式 將左邊兩個自變數的 Tuple 傳遞至右側的 函式。
|||> ( |||> )<'T1,'T2,'T3,'U> 函式 將左邊三個自變數的 Tuple 傳遞至右側的 函式。
>> 函數 撰寫兩個函式(正向組合運算子)。
<< 函數 以反向順序撰寫兩個函式:第二個會先執行 (回溯組合運算符)。
<| 函數 將右側表達式的結果傳遞至左側的函式(向後管道運算符)。
<|| ( <|| )<'T1,'T2,'U> 函式 將右側兩個自變數的 Tuple 傳遞至左側的 函式。
<||| ( <||| )<'T1,'T2,'T3,'U> 函式 將右側三個自變數的 Tuple 傳遞至左側的函式。

類型子號和運算符號

下表描述與類型批注和類型測試相關的符號。

符號或運算符號 連結 說明
-> 函數 在函式類型中,分隔自變數和傳回值,也會在序列表達式中產生結果。
: 函數 在類型批注中,將參數或成員名稱與其類型分隔開來。
:> 轉換和轉換 將類型轉換成階層中較高類型的類型。
:? 比對表達式 true如果值符合指定的型別,則傳回 ;否則會傳false回 (類型測試運算元)。
:?> 轉換和轉換 將類型轉換成階層中較低的類型。
# 彈性類型 與型別搭配使用時,表示 彈性型別,該型別是指型別或其任何一個衍生型別。
' 自動一般化 表示泛型型別參數。
<...> 自動一般化 分隔類型參數。
^ 靜態解析的類型參數

字串
  • 指定必須在編譯階段解析的類型參數,而不是在運行時間解析。
  • 串連字串。
{} 類別記錄 搭配 type 關鍵詞使用時,會分隔類別或記錄。 當宣告成員或使用 class 關鍵詞時,此類型是類別。 否則,這是一筆記錄。
{||} 匿名記錄 表示匿名記錄

成員查閱和配量表示式中使用的符號

下表描述成員查閱和配量表達式中使用的其他符號。

符號或運算符號 連結 說明
. 成員 存取成員,並以完整名稱分隔個別名稱。
[...].[...] 陣列

索引屬性

配量表達式
在陣列、字串或集合中編製索引,或接受集合的配量。

元組、清單、陣列、單位表達式和模式中使用的符號

下表描述與 Tuple、清單、單位值和數位相關的符號。

符號或運算符號 連結 說明
( ) 單位類型 表示單位類型的單一值。
, Tuple 分隔 Tuple 或型別參數的專案。
:: 清單

比對表達式
  • 建立清單。 左邊的專案會放在右邊的清單前面。
  • 用於模式比對,以分隔清單的部分。
@ 清單 串連兩個清單。
[...] 清單 分隔清單的專案。
[|...|] 陣列 分隔陣列的專案。

命令式表達式中使用的符號

下表描述表達式中使用的其他符號。

符號或運算符號 連結 說明
<- 價值 將值指派給變數。
; 詳細資訊語法

分隔表達式(大部分用於詳細資訊語法)。 也會分隔記錄清單或欄位的專案。

序列和計算表達式中使用的其他符號

下表描述 序列計算表示式中使用的其他符號。

符號或運算符號 連結 說明
-> 序列 產生運算式(在序列運算式中):相當於 do yield 關鍵詞。
! 計算表達式 在 關鍵詞之後,表示由計算表達式所控制之關鍵詞行為的修改版本。

比對模式中使用的其他符號

下表描述與模式比對相關的符號。

符號或運算符號 連結 說明
-> 比對表達式 用於比對表達式。
& 模式比對
  • 計算可變動值的位址,以在與其他語言互作時使用。
  • 用於 AND 模式。
_ 比對表達式

泛型
  • 表示通配符模式。
  • 指定匿名泛型參數。
| 比對表達式 分隔個別比對案例、個別歧視聯集案例和列舉值。

宣告中使用的其他符號

下表描述與宣告相關的符號。

符號或運算符號 連結 說明
(|...|) 活動模式 分隔使用中的模式名稱。 也稱為 香蕉剪輯
? 參數和自變數 指定選擇性自變數。
~~ 運算子多載 用來宣告一元否定運算符的多載。
~- 運算子多載 用來宣告一元減號運算符的多載。
~+ 運算子多載 用來宣告一元加號運算符的多載。

引號中使用的其他符號

下表描述與 程式代碼引號相關的符號。

符號或運算符號 連結 說明
<@...@> 程式代碼引號 分隔具類型的程式代碼引號。
<@@...@@> 程式代碼引號 分隔不具類型的程式代碼引號。
% 程式代碼引號 用於將表達式分割成具類型的程式代碼引號。
%% 程式代碼引號 用於將表達式分割成不具類型的程式代碼引號。

動態查閱運算子

下表描述動態查閱表示式中使用的其他符號。 它們通常不會用於例程 F# 程式設計,而且 F# 核心連結庫中不會提供這些運算子的實作。

符號或運算符號 連結 說明
? 做為動態方法和屬性呼叫的運算元。
? ... <- ... 做為設定動態屬性的運算符。

查詢中可為 Null 的運算子

可為 Null 的運算子 會定義以用於 查詢表示式。 下表顯示這些運算子。

符號或運算符號 連結 說明
%? 可為 Null 的運算子 當右側是可為 Null 的類型時,計算整數餘數。
*? 可為 Null 的運算子 當右側是可為 Null 的類型時,乘以左右兩側。
+? 可為 Null 的運算子 當右側是可為 Null 的類型時,加入左右兩側。
-? 可為 Null 的運算子 當右側是可為 Null 的類型時,從左側減去右邊。
/? 可為 Null 的運算子 當右側是可為 Null 的類型時,將左側除以右側。
<? 可為 Null 的運算子 當右側是可為 Null 的類型時,計算小於作業。
<>? 可為 Null 的運算子 當右側是可為 Null 的類型時,計算「不相等」作業。
<=? 可為 Null 的運算子 當右側是可為 Null 的類型時,計算「小於或等於」作業。
=? 可為 Null 的運算子 當右側是可為 Null 的型別時,計算「相等」作業。
>? 可為 Null 的運算子 當右側是可為 Null 的類型時,計算「大於」作業。
>=? 可為 Null 的運算子 當右側是可為 Null 的類型時,計算「大於或等於」作業。
?>=?>?<=?<?=?<>?+?-?*?/ 可為 Null 的運算子 相當於沒有的對應運算符? 前置詞,其中可為 Null 的類型位於左側。
>=?>?<=?<?=?<>?+?-?*?/? 可為 Null 的運算子 相當於沒有的對應運算符? 後綴,其中可為 Null 的類型位於右側。
?>=??>??<=??<??=??<>??+??-??*??/? 可為 Null 的運算子 相當於沒有周圍問號的對應運算符,其中兩端都是可為 Null 的型別。

參考資料格運算子(已淘汰)

下表描述與 參考儲存格相關的符號。 從 F# 6 起,使用這些運算子會產生諮詢訊息。 如需詳細資訊,請參閱 參考數據格作業諮詢訊息

符號或運算符號 連結 說明
! 參考儲存格 取值參考數據格。
:= 參考儲存格 將值指派給參考數據格。

運算元優先順序

下表顯示 F# 中運算元和其他表達式關鍵詞的優先順序,順序是從最低優先順序到最高優先順序。 此外,如果適用,也會列出關聯性。

操作員 關聯性
as 正確
when 正確
| (管道) 左側
; 正確
let 非關聯
functionfunmatchtry 非關聯
if 非關聯
not 正確
-> 正確
:= 正確
, 非關聯
or|| 左側
&&& 左側
:>:?> 正確
< op>op=|op&&$

(包括 <<<>>>|||&&&
左側
^ op

(包括 ^^^
正確
:: 正確
:? 非關聯性
- op+op 適用於這些符號的 infix 用法
* op/op%op 左側
** op 正確
f x (函式應用程式)

( 包括 lazy xassert x
左側
| (模式相符) 正確
前置詞運算符(+op-op%&%%、、&&!op~op 左側
. 左側
f(x) 左側
f< 類型> 左側

F# 支援自定義運算子多載。 這表示您可以定義自己的運算符。 在上表中, op 可以是內建或用戶定義的任何有效(可能空白)運算符字元序列。 因此,您可以使用這個資料表來判斷自定義運算符要使用的字元序列,以達到所需的優先順序層級。 編譯程式決定優先順序時,會忽略前置 . 字元。

另請參閱