符號和運算子參考
本文包含的表格會描述 F# 中使用的符號和運算子,並提供每個符號的簡短描述。 某些符號和運算子在多個角色中使用時,會有兩或多個項目。
註解、編譯器指示詞和屬性符號
下表描述與註解、編譯器指示詞和屬性相關的符號。
符號或運算子 | 連結 | 描述 |
---|---|---|
(*...*) |
分隔無法跨越多行的註解。 | |
// |
表示單行註解的開頭。 | |
/// |
XML 文件 | 表示 XML 註解。 |
# |
編譯器指示詞 | 開頭前置處理器或編譯器指示詞。 |
[<...>] |
屬性 | 分隔屬性。 |
字串和識別碼符號
下表描述與字串相關的符號。
符號或運算子 | 連結 | 描述 |
---|---|---|
" |
字串 | 分隔文字字串。 |
@" |
字串 | 啟動逐字文字字串,其可能包含反斜線和其他字元。 |
""" |
字串 | 分隔三引號文字字串,其中可能包含反斜線、雙引號和其他字元。 |
$" |
字串插值 | 開始插入字串。 |
' |
常值 | 分隔單一字元常值。 |
``...`` |
分隔若在其他狀況下不會是合法識別項的識別項,例如語言關鍵字。 | |
\ |
字串 | 逸出下一個字元;用於字元和字串常值中。 |
算術運算子
下表描述可用的算數運算子。
符號或運算子 | 連結 | 描述 |
---|---|---|
+ |
算術運算子 |
|
- |
算術運算子 |
|
* |
算術運算子 元組 測量單位 |
|
/ |
算術運算子 測量單位 |
|
% |
算術運算子 | 計算整數餘數。 |
** |
算術運算子 | 計算乘冪運算 (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 的項目或型別參數。 |
:: |
清單 比對運算式 |
|
@ |
清單 | 串連兩個清單。 |
[...] |
清單 | 分隔清單的元素。 |
[|...|] |
陣列 | 分隔陣列的元素。 |
命令式運算式中使用的符號
下表描述運算式中使用的其他符號。
符號或運算子 | 連結 | 描述 |
---|---|---|
<- |
值 | 將值指派給變數。 |
; |
詳細語法 |
分隔運算式 (大部分用於詳細語法中)。 也會分隔記錄清單或欄位的元素。 |
序列和計算運算式中使用的其他符號
符號或運算子 | 連結 | 描述 |
---|---|---|
-> |
序列 | 產生運算式 (在循序項運算式中);相當於 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 |
Right |
when |
Right |
| (管道) |
Left |
; |
Right |
let |
Nonassociative |
function , fun , match , try |
Nonassociative |
if |
Nonassociative |
not |
Right |
-> |
Right |
:= |
Right |
, |
Nonassociative |
or 、|| |
Left |
& 、&& |
Left |
:> 、:?> |
Right |
< op、> op、= 、| op、& op、& 、$ (包括 <<< 、>>> 、||| 、&&& ) |
Left |
^ op(包括 ^^^ ) |
Right |
:: |
Right |
:? |
未關聯 |
- op、+ op |
適用於這些符號的中置用法 |
* op、/ op、% op |
Left |
** op |
Right |
f x (函式應用程式)(包括 lazy x 、assert x ) |
Left |
| (模式比對) |
Right |
前置運算子 (+ op、- op、% 、%% 、& 、&& 、! op、~ op) |
Left |
. |
Left |
f(x) |
Left |
f< 類型> |
Left |
F# 支援自訂運算子多載。 這表示您可以定義自己的運算子。 在上表中,op 可以是任何有效的 (可能是空的) 運算子字元序列,即內建或使用者定義的序列。 因此,您可以使用此表格來判斷要對自訂運算子使用什麼字元序列,以達到您想要的優先順序等級。 前置 .
字元在編譯器判斷優先順序時,會予以忽略。