本文包含描述 F# 中使用的符號和運算子的數據表,並提供每個符號的簡短描述。 某些符號和運算符在多個角色中使用時有兩個以上的專案。
批注、編譯程式指示詞和屬性符號
下表描述與批注、編譯程式指示詞和屬性相關的符號。
| 符號或運算符號 | 連結 | 說明 |
|---|---|---|
(*...*) |
分隔可跨越多行的批注。 | |
// |
表示單行批注的開頭。 | |
/// |
XML 檔 | 表示 XML 批注。 |
# |
編譯程式指示詞 | 前置詞預處理器或編譯程式指示詞。 |
[<...>] |
屬性 | 分隔屬性。 |
字串和識別碼號
下表描述與字串相關的符號。
| 符號或運算符號 | 連結 | 說明 |
|---|---|---|
" |
字串 | 分隔文字字串。 |
@" |
字串 | 啟動逐字文字字串,其中可能包含反斜杠和其他字元。 |
""" |
字串 | 分隔三引號文字字串,其中可能包含反斜杠、雙引號和其他字元。 |
$" |
插入字串 | 啟動插入字串。 |
' |
字面值 | 分隔單一字元常值。 |
``...`` |
分隔標識符,否則不會是法律標識符,例如語言關鍵詞。 | |
\ |
字串 | 逸出下一個字元;用於字元和字串常值。 |
算術運算子
下表描述算術運算元。
| 符號或運算符號 | 連結 | 說明 |
|---|---|---|
+ |
算術運算子 |
|
- |
算術運算子 |
|
* |
算術運算子 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 關鍵詞。 |
! |
計算表達式 | 在 關鍵詞之後,表示由計算表達式所控制之關鍵詞行為的修改版本。 |
比對模式中使用的其他符號
下表描述與模式比對相關的符號。
| 符號或運算符號 | 連結 | 說明 |
|---|---|---|
-> |
比對表達式 | 用於比對表達式。 |
& |
模式比對 |
|
_ |
比對表達式 泛型 |
|
| |
比對表達式 | 分隔個別比對案例、個別歧視聯集案例和列舉值。 |
宣告中使用的其他符號
下表描述與宣告相關的符號。
| 符號或運算符號 | 連結 | 說明 |
|---|---|---|
(|...|) |
活動模式 | 分隔使用中的模式名稱。 也稱為 香蕉剪輯。 |
? |
參數和自變數 | 指定選擇性自變數。 |
~~ |
運算子多載 | 用來宣告一元否定運算符的多載。 |
~- |
運算子多載 | 用來宣告一元減號運算符的多載。 |
~+ |
運算子多載 | 用來宣告一元加號運算符的多載。 |
引號中使用的其他符號
下表描述與 程式代碼引號相關的符號。
| 符號或運算符號 | 連結 | 說明 |
|---|---|---|
<@...@> |
程式代碼引號 | 分隔具類型的程式代碼引號。 |
<@@...@@> |
程式代碼引號 | 分隔不具類型的程式代碼引號。 |
% |
程式代碼引號 | 用於將表達式分割成具類型的程式代碼引號。 |
%% |
程式代碼引號 | 用於將表達式分割成不具類型的程式代碼引號。 |
動態查閱運算子
下表描述動態查閱表示式中使用的其他符號。 它們通常不會用於例程 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 |
非關聯 |
function、fun、match、try |
非關聯 |
if |
非關聯 |
not |
正確 |
-> |
正確 |
:= |
正確 |
, |
非關聯 |
or、|| |
左側 |
&、&& |
左側 |
:>、:?> |
正確 |
<
op、>op、=、|op、&&、、$(包括 <<<、 >>>、 |||、 &&&) |
左側 |
^
op(包括 ^^^) |
正確 |
:: |
正確 |
:? |
非關聯性 |
-
op、 +op |
適用於這些符號的 infix 用法 |
*
op、 /op、 %op |
左側 |
**
op |
正確 |
f x (函式應用程式)( 包括 lazy x、 assert x) |
左側 |
| (模式相符) |
正確 |
前置詞運算符(+op、-op、%、&%%、、&&!op、~op) |
左側 |
. |
左側 |
f(x) |
左側 |
f<
類型> |
左側 |
F# 支援自定義運算子多載。 這表示您可以定義自己的運算符。 在上表中, op 可以是內建或用戶定義的任何有效(可能空白)運算符字元序列。 因此,您可以使用這個資料表來判斷自定義運算符要使用的字元序列,以達到所需的優先順序層級。 編譯程式決定優先順序時,會忽略前置 . 字元。