共用方式為


符號和運算子參考 (F#)

本主題包含 F# 語言中使用之符號和運算子的表格。

符號和運算子的表格

下表描述 F# 語言中使用的符號,包含提供詳細資訊的主題連結,以及簡要說明符號的一些用法。符號依 ASCII 字元集順序來排序。

符號或運算子

連結

描述

!

參照儲存格 (F#)

計算運算式 (F#)

  • 為參考儲存格取值。

  • 放在關鍵字之後,表示由工作流程所控制之關鍵字行為的已修改版本。

!=

不適用。

  • F# 中不使用。將 <> 用於不等比較運算。

"

常值 (F#)

字串 (F#)

  • 分隔文字字串。

"""

字串 (F#)

分隔符號 (文字字串。與 @"..." 不同之處在於以字串,的單引號可以表示引號字元。

#

編譯器指示詞 (F#)

彈性型別 (F#)

  • 放在前置處理器指示詞或編譯器指示詞前面,例如 #light。

  • 與型別搭配使用時,表示「彈性型別」(Flexible Type),也就是指型別或其衍生型別的任何一個型別。

$

沒有其他資訊。

  • 在內部用於編譯器產生的某些變數和函式名稱。

%

算術運算子 (F#)

程式碼引號 (F#)

  • 計算整數模數。用於接合引號。

%?

可為 Null 的運算子 (F#)

在右邊是可為 Null 的型別時,會計算整數模數。

&

搜尋運算式 (F#)

  • 計算可變值的位置,在與其他語言相互操作時使用。

  • 用於 AND 模式。

&&

Boolean 運算子 (F#)

  • 計算布林 AND 運算。

&&&

位元運算子 (F#)

  • 計算位元 AND 運算。

'

常值 (F#)

自動產生 (F#)

  • 分隔單一字元常值。

  • 表示泛型型別參數。

``...``

沒有其他資訊。

  • 分隔不是合法識別項的識別項 (例如語言關鍵字)。

( )

單位類型 (F#)

  • 表示單位類型的單一值。

(...)

Tuple (F#)

運算子多載 (F#)

  • 表示評估運算式的順序。

  • 分隔 Tuple。

  • 用於運算子定義。

(*...*)

  • 分隔可能擴展至多行的註解。

(|...|)

作用中的模式 (F#)

  • 分隔作用中的模式。也稱為「香蕉夾」(Banana Clip)。

*

算術運算子 (F#)

Tuple (F#)

測量單位 (F#)

  • 做為二元運算子時,會將左右兩邊的內容相乘。

  • 在型別中,表示 Tuple 中的配對。

  • 用於測量單位類型。

*?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,將會出現。

**

算術運算子 (F#)

  • 計算乘冪運算 (x ** y 表示 x 自乘至 y 的乘冪)。

+

算術運算子 (F#)

  • 做為二元運算子時,會將左右兩邊的內容相加。

  • 做為一元運算子時,表示正量 (形式上,它會產生正負符號不變的相同值)。

+?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,將會出現。

,

Tuple (F#)

  • 分隔 Tuple 的項目或型別參數。

-

算術運算子 (F#)

  • 做為二元運算子時,會將左邊內容減掉右邊內容。

  • 做為一元運算子時,會執行負運算。

-

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,從左邊減掉右邊。

->

函式 (F#)

搜尋運算式 (F#)

  • 在函式型別中,會分隔引數和傳回值。

  • 產生運算式 (在序列運算式中);相當於 yield 關鍵字。

  • 用於比對運算式。

.

成員 (F#)

基本型別 (F#)

  • 存取成員,並分隔完整限定名稱中的個別名稱。

  • 指定浮點數中的小數點。

..

迴圈:for...in 運算式 (F#)

  • 指定範圍。

.. ..

迴圈:for...in 運算式 (F#)

  • 同時指定範圍和增量。

.[...]

陣列 (F#)

  • 存取陣列元素。

/

算術運算子 (F#)

測量單位 (F#)

  • 將左邊 (分子) 除以右邊 (分母)。

  • 用於測量單位類型。

/?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,由右邊除以左邊。

//

  • 表示單行註解的開頭。

///

XML 文件 (F#)

  • 表示 XML 註解。

:

函式 (F#)

  • 在型別附註中,分隔參數或成員名稱與其型別。

::

清單 (F#)

搜尋運算式 (F#)

  • 建立清單。左邊項目會附加至右邊清單。

  • 在模式比對中用來分隔清單的各部分。

:=

參照儲存格 (F#)

  • 指派值給參考儲存格。

:>

轉型和轉換 (F#)

  • 將型別轉換為階層中的較高型別。

:?

搜尋運算式 (F#)

  • 如果值符合指定的型別,則傳回 true,否則傳回 false (型別測試運算子)。

:?>

轉型和轉換 (F#)

  • 將型別轉換為階層中的較低型別。

;

詳細語法 (F#)

清單 (F#)

資料錄 (F#)

  • 分隔運算式 (最常用於詳細語法)。

  • 分隔清單的項目。

  • 分隔記錄的欄位。

<

算術運算子 (F#)

  • 計算小於運算。

<?

可為 Null 的運算子 (F#)

在右邊是可為 Null 的型別時,計算小於作業。

<<

函式 (F#)

  • 以相反順序複合兩個函式,因此第二個函式會先執行 (反向複合運算子)。

<<<

位元運算子 (F#)

  • 依右邊指定的位元數,將左邊數量的位元向左移。

<-

值 (F#)

  • 指派值給變數。

<...>

自動產生 (F#)

  • 分隔型別參數。

<>

算術運算子 (F#)

  • 如果左邊內容不等於右邊內容,則傳回 true,否則傳回 false。

<>?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,計算「不等於」作業。

<=

算術運算子 (F#)

  • 如果左邊內容小於或等於右邊內容,則傳回 true,否則傳回 false。

<=?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,計算小於或等於」作業。

<|

函式 (F#)

  • 將右邊運算式的結果傳遞至左邊函式 (反向管線運算子)。

<||

Operators.( <|| )<'T1,'T2,'U> 函式 (F#)

  • 傳遞兩個引數的 Tuple 右邊至左邊的函式。

<|||

Operators.( <||| )<'T1,'T2,'T3,'U> 函式 (F#)

  • 透過三個引數的 Tuple 右邊至左邊的函式。

<@...@>

程式碼引號 (F#)

  • 分隔具型別的程式碼引號。

<@@...@@>

程式碼引號 (F#)

  • 分隔不具型別的程式碼引號。

=

算術運算子 (F#)

  • 如果左邊內容等於右邊內容,則傳回 true,否則傳回 false。

=?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,計算「等於」作業。

==

不適用。

  • F# 中不使用。將 = 用於等號比較運算。

>

算術運算子 (F#)

  • 如果左邊內容大於右邊內容,則傳回 true,否則傳回 false。

>?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,比作業計算「greather。

>>

函式 (F#)

  • 複合兩個函式 (正向複合運算子)。

>>>

位元運算子 (F#)

  • 依右邊指定的位數,將左邊數量的位元向右移。

>=

算術運算子 (F#)

  • 如果右邊內容大於或等於左邊內容,則傳回 true,否則傳回 false。

>=?

可為 Null 的運算子 (F#)

  1. 在右邊是可為 Null 的型別時,計算大於或等於」作業。

?

參數和引數 (F#)

  • 指定選擇性引數。

  • 做為動態方法和屬性呼叫的運算子。您必須提供自己的實作。

? ... <- ...

沒有其他資訊。

  • 做為設定動態屬性的運算子。您必須提供自己的實作。

?>=, ?>, ?<=, ?<, ?=, ?<>, ?+, ?-, ?*, ?/

可為 Null 的運算子 (F#)

  1. 要對應的對等沒有?前置詞,其中可為 Null 的型別在左邊。

>=?, >?, <=?, <?, =?, <>?, +?, -?, *?, /?

可為 Null 的運算子 (F#)

  1. 要對應的對等沒有?後置字元,其中可為 Null 的型別靠右對齊。

?>=?, ?>?, ?<=?, ?<?, ?=?, ?<>?, ?+?, ?-?, ?*?, ?/?

可為 Null 的運算子 (F#)

  1. 要對應的對等沒有周圍的問號,兩個可為 null 的型別。

@

清單 (F#)

字串 (F#)

  • 串連兩個清單。

  • 放在字串常值前面時,表示要逐字解譯字串,而不解譯逸出字元。

[...]

清單 (F#)

  • 分隔清單的項目。

[|...|]

陣列 (F#)

  • 分隔陣列的元素。

[<...>]

屬性 (F#)

  • 分隔屬性。

\

字串 (F#)

  • 逸出下一個子元;用於字元和字串常值。

^

以統計方式解析的型別參數 (F#)

字串 (F#)

  • 指定必須在編譯時期 (而不是在執行階段) 解析的型別參數。

  • 串連字串。

^^^

位元運算子 (F#)

  • 計算位元排除 OR 運算。

_

搜尋運算式 (F#)

泛型 (F#)

  • 表示萬用字元模式。

  • 指定匿名泛型參數。‏

`

自動產生 (F#)

  • 在內部使用以表示泛型型別參數。

{...}

序列 (F#)

資料錄 (F#)

  • 分隔序列運算式和計算運算式。

  • 用於記錄定義。

|

搜尋運算式 (F#)

  • 分隔個別比對案例、個別已區分的聯集案例和列舉值。

||

Boolean 運算子 (F#)

  • 計算布林 OR 運算。

|||

位元運算子 (F#)

  • 計算位元 OR 運算。

|>

函式 (F#)

  • 將左邊結果傳遞至右邊函式 (正向管線運算子)。

||>

Operators.( ||> )<'T1,'T2,'U> 函式 (F#)

  • 傳遞兩個引數的 Tuple 左邊到右邊的函式。

|||>

Operators.( |||> )<'T1,'T2,'T3,'U> 函式 (F#)

  1. 透過三個引數的 Tuple 左邊到右邊的函式。

~~

運算子多載 (F#)

  • 用來宣告一元負運算子的多載。

~~~

位元運算子 (F#)

  • 計算位元 NOT 運算。

~-

運算子多載 (F#)

  • 用來宣告一元減法運算子的多載。

~+

運算子多載 (F#)

  • 用來宣告一元加法運算子的多載。

運算子優先順序

下表依最低至最高的優先順序,說明 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>

[左] 

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

請參閱

參考

運算子多載 (F#)

其他資源

F# 語言參考