共用方式為


Functor 應用程式

Functor 是可讓您存取可呼叫之特定特製化實作的處理站。 Q# 目前支援兩個函式;AdjointControlled,這兩者都可以套用至提供必要特製化的作業。

ControlledAdjoint 函式通勤:如果 ApplyUnitary 是同時支援這兩個函式的作業,則 Controlled Adjoint ApplyUnitaryAdjoint Controlled ApplyUnitary之間沒有任何差異。 兩者都有相同的型別,並在調用時,執行針對 controlled adjoint特製化所定義的實作

Adjoint functor

如果作業 ApplyUnitary 定義量子狀態的統一轉換 UAdjoint ApplyUnitary 存取 U†的實作。 Adjoint 函式是它自己的反函數,因為定義 (U†)† = U。 例如,Adjoint Adjoint ApplyUnitaryApplyUnitary相同。

表達式 Adjoint ApplyUnitary 是與 ApplyUnitary相同類型的作業;它有相同的自變數和傳回類型,並支援相同的函式。 如同任何作業,可以使用適合類型的自變數來叫用它。 下列表達式會將 ApplyUnitary相鄰特製化 套用至自變數 arg

Adjoint ApplyUnitary(arg) 

受控制函式

針對定義量子狀態 U 單一轉換的作業 ApplyUnitaryControlled ApplyUnitary 存取套用 U 條件的實作,條件式套用在處於 |1⟩ 狀態之控制量子位數組中的所有量子位。

表達式 Controlled ApplyUnitary 是具有相同傳回型別和 作業特性的作業,ApplyUnitary,這表示它支援相同的函式。 它會採用類型為 (Qubit[], <TIn>)的自變數,其中 <TIn> 應取代為 ApplyUnitary的自變數類型,並將 單一元組等價 納入考慮。

行動 自變數類型 受控自變數類型
X Qubit (Qubit[], Qubit)
交換 (Qubit, Qubit) (Qubit[], (Qubit, Qubit))

具體地說,如果 cs 包含量子位數組,q1q2 是兩個量子位,而且作業 SWAP 如這裡 所定義,則下列表達式會交換 q1 的狀態,如果 cs 中的所有量子位都處於 |1⟩狀態,則下列表達式會交換 q1q2

Controlled SWAP(cs, (q1, q2))

備註

根據處於 |1 以外狀態的控件量子位,有條件地套用作業⟩可以藉由在叫用之前將適當的相鄰轉換套用至控件量子位,並在之後套用反向。 例如,在 |0⟩ 狀態的所有控制量子位上調理轉換,可以透過套用前後的 X 作業來達成。 這可以使用 結合方便表示。 儘管如此,這類建構的詳細資訊在未來可能值得額外支援更精簡的語法。