共用方式為


Functor 應用程式

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

Controlled Adjoint 函式通勤;如果 ApplyUnitary 是同時支援這兩個函式的作業,則 和 Adjoint Controlled ApplyUnitary之間Controlled Adjoint 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自變數類型,並將 singleton Tuple 等價 納入考慮。

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

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

Controlled SWAP(cs, (q1, q2))

注意

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